按类别显示用户的帖子

时间:2015-07-12 11:30:59

标签: php mysql select blogs categories

下午全部,

寻找按类别列出帖子的方向。

我已经开始编写CMS(作为PHP初学者)并且直到现在一切进展顺利。

我已经预先设定了类别(类别1,类别2等)的链接

我还有一个带有ID和类别名称的类别表。

包含CatID和类别名称的用户帖子的表格

我猜我需要加入牌才能列出特定类别的任何帖子(选择Cat 1以查看所有Cat 1帖子。同样适用于Cat 2,3等等)

当用户添加帖子时,它会填写用户帖子表中的类别名称,但我没有获得CAT ID,也没有添加到类别表中,那么我如何调用它来显示分类帖子?

我有一种感觉,我可能会考虑很多东西并且过度复杂化应该很简单的事情。

我现在的代码(见下文)根本没有效果?

请帮助我指出正确的方向,我已经尝试了一切。

非常感谢所有提前

CODE:

$catSql ="SELECT        ID, Category
        FROM        categories
        LEFT JOIN   users_posts
        ON          CatID, category, BlogID";

$catQry = mysqli_query($link, $catSql);

while ($row = mysqli_fetch_assoc($catQry)){

    if($row['category_name'] != $lastCategory)
{
   $lastCategory = $row['category'];
   echo "<br /><strong>$lastCategory</strong>";
}        
echo $row['category'] . ' <br />';

}

2 个答案:

答案 0 :(得分:1)

用于列出帖子的SQL可以检查URL中是否存在categoryID,如果存在,则使用它来过滤结果..然后,您只需创建一些指向同一页面的链接即可添加URL的必需类别ID。

<a href='?cat=1'>Cat 1</a> | <a href='?cat=2'>Cat 2</a> | etc..

SQL

$sql = "SELECT * FROM POSTS";
if(isset($_GET['cat'])){
    $catID = (int)$_GET['cat']; //or something similar
    $sql .= " LEFT JOIN category USING categoryID WHERE categoryID = $catID";
}

答案 1 :(得分:1)

你的SQL错了我认为这应该有效

$catSql = "SELECT *
    FROM        categories
    LEFT JOIN   users_posts
    ON          categories.ID = users_posts.CatID";