从两个SQL表中打印breadcrumb跟踪

时间:2011-02-17 14:53:24

标签: php mysql

问题解决了..这可能是一种更简单的方法,但下面的FOR循环工作正常。

嘿,我正在尝试打印分类广告的痕迹痕迹。我有两张桌子(分类和类别)。分类包含所有详细记录,类别包含站点的类别结构。

他们看起来像这样:

classifieds: | id | name | cat | descrip | contact | email | price | picture | password |   
categories: | id | name | sub | parent |

类别记录的示例:

| 1 | Cars | 0 | 0 |  
| 2 | Muscle Cars | 1 | 1 |  
| 3 | Ford | 2 | 1 |  

我的逻辑是从CLASSIFIEDS表中获取cat#并在CATEGORIES表中找到该记录。然后计算CATEGORIES表中有多少其他行具有相同的父#。然后创建一个循环来拉动子类别的次数与父项一样多,并将它们的名称存储在数组中。完成后,循环并打印数组。

$row['cat'] is equal to the 'cat' column of classifieds  

// if there is at least 1 record in classifieds, process it  
if ($rows > 0) { 

$cat = $row['cat'];  
$querya = "SELECT * FROM categories WHERE id = '$cat' limit 1";  
$resulta = mysql_query($querya);  
    while ($rowa = mysql_fetch_array($resulta, MYSQL_ASSOC)) {  
        $catname = $rowa['name'];  
        $catsub = $rowa['sub'];  
        $catparent = $rowa['parent'];  
    }

// count how many other rows have the same parent  
$queryparent = "SELECT * FROM categories WHERE parent = '$catparent'";  
$pullparent = mysql_query($queryparent);  
$parents = mysql_num_rows($pullparent);  

OLD FOR LOOP
    //拉下子记录
    if($ catsub> 1){
        for($ i = 0; $ i< $ parents; $ i ++){
            $ queryc =“SELECT * FROM categories WHERE id ='$ catsub'”;
           $ subcat2 = mysql_query($ queryc);
           而{$ row3 = mysql_fetch_array($ subcat2,MYSQL_ASSOC)){
          $ breadc [] = $ row3 ['name'];
$ breadsub = $ row3 ['sub'];
$ catsub = $ breadsub;
}

}  
else { } 

正确的循环
if($ catsub> 0){
for($ i = 0; $ i< $ parents; $ i ++){

$ queryc = mysql_query(“SELECT * FROM categories WHERE id ='$ catsub'ORDER BY id ASC”);
$ row3 [$ i] = mysql_fetch_array($ queryc,MYSQL_ASSOC);
$ catsub = $ row3 [$ i] ['sub'];

}
}
别的{}

foreach ($breadc as $crumb) {  
    echo $crumb . " > ";  
}

上面的foreach回声打印了这条小道 - 向后但是 - 正如福特>肌肉车>汽车,但它只用于CLASSIFIEDS表中的第一个记录。因此,如果该表中有15条记录,则会为每个记录打印相同的面包屑结构。

'// pull subparent records'注释下的for循环迭代次数与记录次数相同,但它不会使用CLASSIFIEDS表中的新数据重新加载自身。我已经玩了一段时间并且还没弄明白。如果有人对此有更好的了解,我可以重组CATEGORIES表。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

我认为你的麻烦就在这里

        $catsub = $breadsub; 

您永远不会在循环中更改$breadsub