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.
PHP ile Etiket Sistemi Sorunum
8
●98
- 02-12-2021, 00:21:54inceleme imkanınız var mı acaba? bu arada veritabanı bağlantı kısmını düzeltmedim hatalı bırakıyorum.Seyum adlı üyeden alıntı: mesajı görüntüle
https://controlc.com/c7ef85e1 - 02-12-2021, 00:30:50select * from text where text_tags LIKE '".%$tag%."'msidergi adlı üyeden alıntı: mesajı görüntüle
Bu şekilde çalışır sanırım - 02-12-2021, 00:33:08Ben 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:30Aldığım hata:Seyum adlı üyeden alıntı: mesajı görüntüle
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:45Mantık bu şekilde syntax düzenlemesine siz bakın hocam yapamazsanız yarın bağlanıp bakarım.msidergi adlı üyeden alıntı: mesajı görüntüle
- 02-12-2021, 01:43:26Bunu 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.