在mysql中的两个表中创建一个php列表

时间:2012-07-30 01:37:56

标签: php mysql sql

我如何在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表“types”中有一个外键,它指向categories表中条目的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以包含类型。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

  1. 从数据库中获取类别并显示在列表1中,子类别列表为空
  2. 关于更改类别使用jquery或javascript提交表单
  3. 基于类别从数据库中发布获取子类别并在列表2中显示,并且列表1的选择属性根据发布的类别值进行选择。
  4. 您也可以使用ajax而不是提交表单。