他们看起来像这样:
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表。
感谢您的任何建议。
答案 0 :(得分:0)
我认为你的麻烦就在这里
$catsub = $breadsub;
您永远不会在循环中更改$breadsub
。