virgülle ayrılmış bir etiket benzersiz anahtar kelimeleri seçmek için, onlar biçimindedir:nasıl benim veritabanından bazı etiketlerini almak isteyen
tag1 tag2 tag3 tag4 tag5 tag6 tag7
:
topic_id tags
1 `tag1,tag2,tag3`
2 `tag1,tag4,tag5`
3 `tag2,tag4,tag5`
4 `tag6,tag7,tag2`
Böyle bir şey olmasını istediğiniz
yani tüm benzersiz etiketler
Böylece, belirli etiketlere sahip haber makalelerini gruplandırmak için her etiketi bir bağlantıya sardım.
şimdiye kadar yazdım Bu aşağıdaki sorgu
çalışmıyor:$tags = mysql_query("SELECT tags, topic_id
FROM forum_topics
WHERE topic_id > 0") or die (mysql_error());
while($tag = mysql_fetch_assoc($tags)){
$split_tags = "$tag";
$pieces = explode(",", $split_tags);
echo $pieces ;
Ben
print_r($pieces);
ı arıyordu değil ne
Array ([0] => Array) Array ([0] => Array) Array ([0] => Array) Array ([0] => Array)
var yaptığında.
Artık benim tablo yapım şu şekildedir topic_id , topic_head, topic_body, topic_tag, topic_date, topic_owner
.. topic_tag normalini nasıl daha da geliştirebilirim.
Bu, oluşturduğunuz bir tablo mu? Eğer öyleyse, açıkça normalize edilmez. Normalleştirilmiş bir tablo, topic_id ve etiketler arasında bire bir eşleştirmeye sahip olur. Ardından, istediğiniz şeyi elde etmek için forum_topics sorgusundan bir "farklı etiket seçin" ifadesini kullanabilirsiniz. –
Ayrıca, kodunuzdaki 'mysql_ *' işlevlerini kullanmayın. Bu işlevler artık korunmuyor ve [kullanımdan kaldırılıyor] (http://news.php.net/php.internals/53799). Bunun yerine, [MySQLi] (http://php.net/mysqli) veya [PDO] (http://php.net/pdo) kullanmalısınız. Hangisini kullanacağınızı bilmiyor musunuz? [Bu makale] (http://php.net/manual/en/mysqlinfo.api.choosing.php) yardımcı olmalıdır. –