2012-02-21 162 views
0

我对php很新,但是我的学习速度非常快,我有一个问题,我希望你的专业版可以帮助我。我做了一些Google搜索,找不到答案。做while循环,如果外键等于主键,则执行while循环

我想做一个动态的下拉菜单,有两个级别 - 我建立了一个数据库并安装了数据,第一级有一个主键和类别名,下一级有一个主键,foriegn键和子类别名称。

我已经创建了一个do while循环的超类作品!现在我试图插入子类别。我会试着总结一下我想要达到的目标。

while每个catergory之间的类别循环运行另一个循环时,显示该类别的主键匹配子类别的foriegn键的所有子类别。然后继续。

例如

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是;

类别 所有子类别 类别 空间 类别 空间 类别 空间 的列表中,直到类别用完。

+2

显示您的代码,请 – Alfabravo 2012-02-21 18:21:53

+0

,如果可能的话还可以使用您的db架构。 – Vamsi 2012-02-21 18:24:24

+0

上面加上 - 谢谢。 – user1224032 2012-02-21 18:40:06

回答

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 

你在前面加上表名和一段相互引用表字段。 AFAIK与MySQL,你可以离开表名称,如果该字段是唯一的,但通常留在完整性。 MySQL网站有文档讨论其他连接类型。

+0

我似乎无法掌握内部加入 – user1224032 2012-02-21 20:11:18

+0

请参阅编辑... – horatio 2012-02-21 20:37:40

+0

然后你是否在这个循环上运行? – user1224032 2012-02-22 07:51:36