我对php很新,但我学得很快,我有一个问题,希望你能帮助我。我做了一些谷歌搜索,但找不到答案。
我正在尝试使用两个级别进行动态下拉菜单 - 我已经设置了数据库并安装了数据,第一级有主键和类别名称,下一级有主键,foriegn键和子类别名称。
我为超类的类别创建了一个do while循环!现在我正在尝试插入子类别。我会试着总结一下我想要实现的目标。
在每个catergory运行另一个循环之间的类别while循环显示所有子类别,其中类别的主键与子类别的foriegn键匹配。然后继续。
e.g。
Category
Sub category
Sub category
Sub category
Category
Sub category
Category
Sub category
Sub category
依旧......
关于如何编码的任何建议?
我希望这是有道理的。
提前谢谢!
最基本的问候。
<?php
// Query member data from the database and ready it for display
$category_sql = "SELECT * FROM tm_product_category";
$category_query = mysql_query($category_sql) or die(mysql_error());
$categorylist = mysql_fetch_assoc($category_query);
?>
<?php
//Connect to the database through our include
include_once "connect_to_mysql.php";
// Query member data from the database and ready it for display
$subcategory_sql = "SELECT * FROM tlk_sub_cat";
$subcategory_query = mysql_query($subcategory_sql) or die(mysql_error());
$subcategorylist = mysql_fetch_assoc($subcategory_query);
?>
<?php do { ?>
<ul><li><a href="category.php?pk_cat_id=<?php echo $categorylist['pk_cat_id'];?>"><?php echo $categorylist['category']; ?></a></ul>
<?php
if ($categorylist['pk_cat_id'] == $subcategorylist['fk_cat_id'])
{
do { ?>
<li><a href="subcategory.php?pk_cat_id=<?php echo $subcategorylist['pk_sub_cat_id'];?>"><?php echo $subcategorylist['txt_sub_cat']; ?></a></li>
<?php } while ($subcategorylist = mysql_fetch_assoc($subcategory_query));
; }
?>
<?php } while ($categorylist = mysql_fetch_assoc($category_query));
?>
我所有的ATM都是;
类别 所有子类别的列表 类别 空间 类别 空间 类别 空间 直到类别用完。
答案 0 :(得分:0)
您可以使用JOIN
执行单个查询,例如INNER JOIN
,然后遍历返回的记录集。如果前一个外键与当前外键不同,则您将进入新的主记录,{do magic}与主记录相关,然后{do magic}表示当前子记录,否则,只需{do magic}目前的子记录。
编辑:
SELECT tm_product_category.*, tlk_sub_cat.*
FROM tm_product_category INNER JOIN tlk_sub_cat ON
tm_product_category.pk_cat_id = tlk_sub_ca.fk_cat_id
通过预先添加表名和句点来引用每个表的字段。使用mysql的AFAIK,如果字段是唯一的,您可以不使用表名,但通常保留完整性。 MySQL网站有文档讨论其他连接类型。