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


Create a list in php from two tables in mysql

如何在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"];
}

?>

然而,它输出的是"体育运动体育运动科学科学",而这显然不应该。体育有5种,科学有3种。所以我不确定那里发生了什么,我不能继续下一步在php中添加类型。

我认为你需要两个包含主类别和子类别的列表,如果是这样,你可以按照以下

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

您也可以使用ajax来代替提交表单。

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

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