我刚刚将一个显示“bread crumbs”样式导航链接的查询转换为PDO:
function get_path($dbh,$node,$TopnavTable, $TopnavName) {
$stmt = $dbh->prepare("SELECT name FROM $TopnavTable WHERE $TopnavName = ?");
$stmt->bindValue(1,$node);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$row = $stmt->fetch();
$path = array_merge(get_path($pdo,$row['Parent'], $TopnavTable, $TopnavName), $path);
return $path ;
}
我也想出了如何显示结果:
$Path2 = explode("/", $path);
$Path2[1] = '<a href="/Topics">'.$Path2[1].'</a>';
$Path2[2] = '<a href="/Topics/'.$Path2[2].'">'.$Path2[2].'</a>';
$Path2[3] = '<span class="navHere"><b>'.$Path2[3].'</b></span>';
echo join( $Path2, ' > ' );
但是有一个问题。只有当我使用由三个段组成的数组时,上述工作才有效。例如,我正在查看URL MySite / Topics / Washington / Governor,它显示以下面包屑路径:
Topics&gt; Washington&gt;调速器
如果我查看MySite / Washington,它应该显示......
Topics&gt;华盛顿
但是我收到一条错误消息:Undefined offset:3
所以我试图找出如何使用任意数量的段 - 2,3,6等等。无论段数如何,我都希望最后一段不被链接。 (我要进一步把它放在一个范围内。)有人有任何提示吗?
答案 0 :(得分:1)
当$path
只有3个成员时,您的代码才有效。您必须使用数组函数count()
&amp;修改代码以适应不同的代码。然后循环遍历数组。
$path ="Topics/Washington/Governor/Trash";
$Path2 = explode("/", $path);
$arrlength=count($Path2);
$html ='<a href="/Topics">'.$Path2[0].'</a> > ';//First Member
for($x=1;$x<$arrlength-1;$x++) {//Between first & last
$html .= '<a href="/Topics/'.$Path2[$x].'">'.$Path2[$x].'</a> > ' ;
}
$html .= '<span class="navHere"><b>'.$Path2[$x].'</b></span>';//Last member
echo $html ;
结果 3
主题&gt;华盛顿&gt;调速器
for 2
主题&gt;华盛顿