Создать массив, используя цикл для связанных элементов - PullRequest
0 голосов
/ 07 января 2010

Я пытаюсь создать «связанные статьи» для наших новостей на основе тегов (тегов из одного слова). Если история помечена 3 тегами, я хотел бы иметь возможность получать самые последние записи для каждого тега, упорядочивать их по дате и отображать только самые последние 5.

Вот то, что я пытаюсь, это, очевидно, не работает, потому что оно перезаписывает переменную массива $ pullRelated последним тегом, через который проходит. Так как я застрял там, я не был уверен, как сортировать все записи по дате, а затем отображать только самые последние 5. Любая помощь приветствуется. Спасибо!

    foreach ($tags as $t) {

    $pullRelated = mysql_query("SELECT * FROM posts WHERE MATCH(tags) AGAINST ('$t') AND status >= 2 AND newsID != $newsID ORDER by postDate DESC LIMIT 5");

    }

    while($related = mysql_fetch_array($pullRelated)) {
        echo $related['postTitle']." ".date("M j, Y",$related['postDate'])."<BR>";
}

1 Ответ

3 голосов
/ 07 января 2010

Почему бы не использовать напрямую логический режим индекса MySQL FULL TEXT?

$str = '';
foreach ($tags as $t) 
    $str .= '+'.$t.' ';

$q = mysql_query("SELECT * FROM posts WHERE MATCH(tags) AGAINST ('$str' IN BOOLEAN MODE) AND status >= 2 AND newsID != $newsID ORDER by postDate DESC LIMIT 5");

while($related = mysql_fetch_array($q))
    echo $related['postTitle']." ".date("M j, Y",$related['postDate'])."<BR>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...