【问题标题】:printing breadcrumb trail from two SQL tables从两个 SQL 表打印面包屑轨迹
【发布时间】: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 表。

感谢您的建议。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我想你的麻烦就在这里

            $catsub = $breadsub; 
    

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

    【讨论】:

    • 我觉得这有点太简单了。当用户提交广告时,他们会选择广告所属的类别,因此类别 ID 需要伴随 CLASSIFIEDS 表中的记录。我需要使用该 ID 从类别表中提取结构。
    • 见鬼,对不起。我确实更改了 $breadsub,我只是忘记在此处复制粘贴该行。我已经更新了代码。我很欣赏你的多个 cmet。附带说明一下,我已经测试了每条记录打印 $parents 的情况,它会为每条记录输出正确的唯一值,所以我很有信心这只是在 for 循环中进行了一些调整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多