显示面包屑数组,键入多个段

时间:2014-01-05 18:08:26

标签: pdo

我刚刚将一个显示“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, ' &gt; ' );

但是有一个问题。只有当我使用由三个段组成的数组时,上述工作才有效。例如,我正在查看URL MySite / Topics / Washington / Governor,它显示以下面包屑路径:

Topics&gt; Washington&gt;调速器

如果我查看MySite / Washington,它应该显示......

Topics&gt;华盛顿

但是我收到一条错误消息:Undefined offset:3

所以我试图找出如何使用任意数量的段 - 2,3,6等等。无论段数如何,我都希望最后一段不被链接。 (我要进一步把它放在一个范围内。)有人有任何提示吗?

1 个答案:

答案 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;华盛顿