• 02-12-2021, 00:09:45
    #1
    Herkese merhaba,

    Bir etiket sistemi yapmaya çalışıyorum bir kısmında takıldım. Konudaki etikete tıklanıldığında konuların listelenmesini sağlamak istiyorum. Bu konuda bana yardımcı olabilecek var mı?

    Şuan konu içinde veritabanındaki etiketler listeleniyor, ancak konudaki etikete tıkladığımda o etiketi içeren konuların listelenmesi kısmını tam beceremedim.
  • 02-12-2021, 00:18:44
    #2
    Etiketleri tek sütunda tuttuğunuzu düşünerek etiketi sql sorguda ilgili sütuna LIKE ile arama yaparak listeleme sağlayabilirsiniz.
  • 02-12-2021, 00:21:54
    #3
    Seyum adlı üyeden alıntı: mesajı görüntüle
    Etiketleri tek sütunda tuttuğunuzu düşünerek etiketi sql sorguda ilgili sütuna LIKE ile arama yaparak listeleme sağlayabilirsiniz.
    inceleme imkanınız var mı acaba? bu arada veritabanı bağlantı kısmını düzeltmedim hatalı bırakıyorum.

    https://controlc.com/c7ef85e1
  • 02-12-2021, 00:24:40
    #4
    Genelde bunlar arama.php'de döner.

    arama.php?kelime=kelime_bu şeklinde get ile kelime gönderin.
    Daha sonra LIKE ile %kelime_bu% şeklinde arama.php dosyasında sorgulama yaparak dönen sonuçları listeleyebilirsiniz.
  • 02-12-2021, 00:30:50
    #5
    msidergi adlı üyeden alıntı: mesajı görüntüle
    inceleme imkanınız var mı acaba? bu arada veritabanı bağlantı kısmını düzeltmedim hatalı bırakıyorum.

    https://controlc.com/c7ef85e1
    select * from text where text_tags LIKE '".%$tag%."'
    Bu şekilde çalışır sanırım
  • 02-12-2021, 00:33:08
    #6
    Ben olsaydım şöyle yapardım;

    contents (id, title) - Konular tablom
    tags (id, slug, title) - Etiketler tablom
    tag_relation (id, tag_id, content_id) Konuları ve etiketleri birbirine bağlayan tablom.

    Konu oluştururken, "elma, armut, kiraz" bunları ayrı satırlar olarak "tags" tablosuna eklerim.
    Bu esnada, tag_relation tablosunuda konu_id ve bu oluşan etiket_id leri insert ederim.

    Daha sonra diyelim /etiket/kiraz

    Etiketi almak için;
    $query = $db->query("SELECT * FROM tags WHERE slug = 'kiraz';");
    $tag = $query->fetch_object();

    Etikete ait konuları almak için;
    $query = $db->query("SELECT t1.id, t2.title FROM tag_relation AS t1 LEFT JOIN contents AS t2 ON t2.id = t1.content_id WHERE t1.tag_id = " . $tag->id);
    Bu sorguda LEFT JOIN yaparak konular tablosuna ve ilişkili konuları rahatlıkla listeyebilirsiniz.
  • 02-12-2021, 00:33:30
    #7
    Seyum adlı üyeden alıntı: mesajı görüntüle
    select * from text where text_tags LIKE '".%$tag%."'
    Bu şekilde çalışır sanırım
    Aldığım hata:

    Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:xampphtdocsbloginctags_list.php:7 Stack trace: #0 C:xampphtdocsbloginctags_list.php(7): PDOStatement->execute(Array) #1 C:xampphtdocsblogindex.php(30): include('C:xampphtdocs...') #2 {main} thrown inC:xampphtdocsbloginctags_list.phpon line7
  • 02-12-2021, 00:37:45
    #8
    msidergi adlı üyeden alıntı: mesajı görüntüle
    Aldığım hata:

    Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:xampphtdocsbloginctags_list.php:7 Stack trace: #0 C:xampphtdocsbloginctags_list.php(7): PDOStatement->execute(Array) #1 C:xampphtdocsblogindex.php(30): include('C:xampphtdocs...') #2 {main} thrown inC:xampphtdocsbloginctags_list.phpon line7
    Mantık bu şekilde syntax düzenlemesine siz bakın hocam yapamazsanız yarın bağlanıp bakarım.
  • 02-12-2021, 01:43:26
    #9
    Bunu 2 şekilde çözebilirsin.
    1. İnput içinde virgülle ayrılan etiketleri explode ile parçalayarak etiketler isimli veritabanına ekleyebilirsin. Tıklayınca istediğin yere yönlendirebilirsin.
    2. Yada inputa kaydedilen virgüllü etiketleri dümdüz ekrana yazdır ve explode ile virgülle parçala. Ardından foreach ile listele. Listelerken linkleyebilirsin.