0

如何在 php 中创建混合在一起的主题类别和类型的列表?

意思是,列表应如下所示:

Sports (this is a category)
    Soccer (this is a type)
    Golf (this is a type)
    Basketball (this is a type)
Science (this is a category)
    Biology (this is a type)
    Chemistry (this is a type)
    Anatomy (this is a type)

困难的部分是体育和科学来自同一张表(称为类别),而足球、高尔夫、篮球、生物、化学和解剖学都来自不同的表(称为类型)。在 MySQL 表“类型”中,有一个外键指向类别表中条目的 id。MySQL 中的当前设置不能轻易更改,因为站点的导航依赖于它。

我如何使用 php 将类型放在类别之间?

目前我的代码是这样的:

<?php session_start ();

include 'connect.php';

$result = mysql_query("SELECT * FROM categories JOIN types ON categories.catid = types.typecat");


while($row = mysql_fetch_array($result))
{
echo $row["catname"];
}


?>

但是,它显然不应该输出“SportsSportsSportsSportsSportsScienceScienceScience”。体育有5种,科学有3种。所以我不确定那里发生了什么,我无法继续下一步添加 php 以包含类型。

4

3 回答 3

1

我相信您的类型表中有一个 id_cat 。然后你应该使用SQL JOINs

于 2012-07-30T01:52:25.850 回答
1

我没有适合您的代码,但查询可以是:
选择类别,从类别 c 中键入,在 c.id 上键入 t = t.id 按类别分组;
或:
从类别中选择不同的类别;
然后分别查询每个类别。
我怀疑单个查询会更有效。

于 2012-07-30T01:56:12.737 回答
1

我认为您需要两个包含主类别和子类别的列表,如果是这样,您可以执行以下操作

  1. 从 db 中获取类别并显示在列表 1 中,子类别列表为空
  2. 在更改类别时使用 jquery 或 javascript 提交表单
  3. 基于发布的类别从数据库中获取子类别并显示在列表 2 中并选择列表 1 的属性使其根据发布的类别值被选中。

您也可以使用 ajax 而不是提交表单。

于 2012-07-30T09:07:47.300 回答