如何在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中,子类别列表为空
- 关于类别的更改使用jquery或javascript提交表单
- 基于发布的类别,从数据库中提取子类别并显示在列表2中,并选择列表1的属性,使其根据发布的类别值进行选择
您也可以使用ajax来代替提交表单。
我相信您的类型表中有一个id_cat。然后应该使用SQL JOIN。
我没有适合您的代码,但查询可能是:
选择类别,从类别c中键入,在c.id=t.id上键入t,按类别分组
或:
从类别中选择不同的类别
然后分别查询每个类别
我怀疑单一查询会更有效率。