使用循环为相关项创建数组

时间:2010-01-07 08:47:45

标签: php arrays

我正在尝试根据标签(单字标签)为我们的新闻创建“相关文章”。如果一个故事标有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 个答案:

答案 0 :(得分:3)

为什么不直接使用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>";