【发布时间】:2011-02-17 14:53:24
【问题描述】:
问题已解决.. 可能是一种更简单的方法,但下面的 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 循环
// 拉取子父记录
if ($catsub > 1) {
for ($i = 0; $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
$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 回显打印轨迹——向后但——正确地为 Ford > Muscle Cars > Cars,但它只对 CLASSIFIEDS 表中的第一条记录执行此操作。因此,如果该表中有 15 条记录,它会为每条记录打印相同的面包屑结构。
'// pull subparent records' 注释下的 for 循环迭代次数与记录数一样多,但它不会使用 CLASSIFIEDS 表中的新数据重新加载自身。我已经玩了一段时间了,还没有弄清楚。如果有人对此有更好的想法,我可以重组 CATEGORIES 表。
感谢您的建议。
【问题讨论】: