PHP / Mysql вытащить 5 связанных историй

0

Мы добавляем теги к нашим новостным сообщениям (мы используем нашу собственную CMS), и я хотел бы выделить 5 связанных историй в зависимости от того, какие теги используются для отдельной истории. У нас есть теги в базе данных, разделенные пробелами, поэтому я использую этот код, чтобы получить теги в массив

$tags = explode(" ", $tags);

Теперь, когда у нас есть теги в массиве, я хочу использовать их, чтобы вытащить связанные истории из базы данных.

foreach($tags as $t) {
    $pullRelated = mysql_query("SELECT * FROM `posts` WHERE `tags` LIKE '%$t%' AND `newsID` != '$newsID' LIMIT 5");

Проблема в том, что если есть 3 тега, в нем будут показаны 15 связанных историй (по 5 для каждого тега). Я бы хотел, если есть 2, 3, 4 или 5 тегов, покажите смесь историй из всех тегов, но все равно показывайте только 5 историй.

Совет

Теги:
tags

1 ответ

0

Таким образом, вы сохраняете теги (ключевые слова, категории) в виде строки с разделителями пробелов в таблице сообщений.

Не так много, что можно сказать об этом, за исключением того, что вам нужно нормализовать дизайн, который облегчит все ваши проблемы и сделает ваше приложение значительно более эффективным, судя по тому, что вы показали до сих пор.

Что-то вдоль этой строки должно быть достаточно:

Переписывание mysql позволяет сократить время и записать tmp на диск

Ещё вопросы

Сообщество Overcoder
Наверх
Меню