【问题标题】:Displaying a User's Posts by Category按类别显示用户的帖子
【发布时间】:2015-07-12 11:30:58
【问题描述】:

下午,

通过按类别列出帖子来寻找方向。

我已经开始编写 CMS(作为 PHP 初学者),到目前为止一切顺利。

我已经建立了预设类别的链接(类别 1、类别 2 等)

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

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

我猜我需要加入表格才能列出特定类别中的任何帖子(选择 Cat 1 以查看所有 Cat 1 帖子。Cat 2、3 等也是如此)

当用户添加帖子时,它会在用户帖子表中填充类别名称,但我没有得到 CAT ID,也没有添加到类别表中,所以我如何调用它来显示分类帖子?

我有一种感觉,我可能正在考虑很多事情并且过度复杂化了可能应该做的事情。

我目前拥有的代码(见下文)根本没有效果?

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

提前感谢大家

代码:

$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 />';

}

【问题讨论】:

  • 您的ON 条件没有任何意义(没有条件,只是列的列表)并且您的 ID 可能导致重复列错误(如果两个表都有 ID 列)。您应该添加错误处理以查看到底有什么问题。
  • 感谢您的回复。

标签: php mysql select blogs categories


【解决方案1】:

您的 SQL 错误,我认为这应该可行

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

【讨论】:

    【解决方案2】:

    您用于列出帖子的 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";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多