【问题标题】:Showing category content with sub categories content显示带有子类别内容的类别内容
【发布时间】:2015-07-24 16:57:35
【问题描述】:

我有主要类别和子类别。

在 cat.php?id=1 页; (id=1 是主要类别)

我还想显示子类别内容。

我的类别表:

id - sub - title

(如果 sub=0 则表示这是主类别。如果不是,则表示子类别)

我目前的查询是这样的;

<?php
    $id =   $_GET['id'];
    $data = mysql_query("select * from content where category=".$id." order by id desc");
    while($r=mysql_fetch_array($data)) 
        {
            echo "$r[id] - $r[title]";
        }
?> 

仅显示主要类别内容,不显示子类别内容。 (在 cat.php?id=1)

*

我想我必须再次连接类别表才能获得子类别的 ID。 ???

当然,我需要一个新的查询。我需要获取sub=".$id." 并在同一页面中列出。

我卡住了。

【问题讨论】:

  • 您需要一个具有主要类别 id 的 parentCategory 字段,然后在您的查询中说 where parentCategory=".$id."
  • 我明白了。这东西我已经有了。正如我在上面写的sub=".$id." 我需要添加这个。但我没有在内容表中保留sub 字段。所以,我还需要连接类别表。但是找不到方法怎么办?
  • 哦,好吧,我想我明白你的意思了。您可以在查询中进行子查询,让我快速将其放入答案中
  • 发布你的表格结构

标签: php mysql categories content-management


【解决方案1】:

因此您还需要获取子类别的 Id,您可以在该查询中嵌入第二个查询(或将其拆分为两个单独的查询,但这会向服务器添加另一个请求)。

你可以这样说:

$data = mysql_query("select * from content where category IN (SELECT id FROM categories WHERE id='$id' OR sub='$id') order by id desc");

使用 WHERE ... IN 可让您从 (3,5,2) 等列表中选择多个值

所以当子查询执行时它看起来和这个类似:

select * from content where category IN (1,3,2,5,13) order by id desc

警告:

您需要清理您的 $_GET['id'] 以便不会发生 sql 注入,目前这将允许 sql 注入。

另外,mysql_ 函数已弃用,您需要开始使用 PDO 准备语句,我对它们不够熟悉,但它们会为您清理用户输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多