这是我在mysql中的猫
cats_id cats_position cats_parentid
1 1> 0
2 1>2> 1
3 3> 0
4 1>2>4> 2
我想创建一个像:
这样的导航索引>汽车>菲亚特> punto
这
cat=4&parent=2&position=1>2>4>
我最终得到了:
指数carcarcarcar
我的PHP知识不足以完成此代码。你可以帮帮我吗。
<?php
$position = trim($_GET['position']);
$pieces = explode(">", $position);
$i=0;
foreach($pieces as $piece){
$result = mysql_query("SELECT * FROM cats
WHERE cats_id='".$pieces[$i]."'");
while($row = mysql_fetch_array($result))
{
$piecesid[$i] = $row['cats_id'];
$piecesname[$i] = $row['cats_name'];
$piecesposition[$i] = $row['cats_position'];
}
$i++;
}
?>
<a href="index.php">Index</a>
<?php $i=0; foreach($pieces as $piece){
if($i=0)
$parent=0;
else
$parent=$placesid[$i-1];
echo '<a href="cats.php?cat='.$piecesid[$i].'&parent='.$parent.'&position='.$piecesposition[$i].'">'.$piecesname[$i];
}
答案 0 :(得分:4)
您的第一个错误是缺少分号:
$i++;
第二个错误是回显线中$parent
后的缺失点:
'&parent='.$parent.'&position='
当您开始缩进代码时,第三个(意外结束)错误将变得明显。省略花括号也是不好的风格,因为这使得更难以找到精确的错误。
最后:在Stackoverflow上发帖时,请添加完整错误消息(始终提及行号!)
答案 1 :(得分:0)
你还没有在最后一个php部分关闭你的foreach
<?php $i=0; foreach($pieces as $piece){
if($i=0)
$parent=0;
else
$parent=$placesid[$i-1];
echo '<a href="cats.php?cat='.$piecesid[$i].'&parent='.$parent'&position='.$piecesposition[$i].'>'.$piecesname[$i];
//Missing } here
?>
答案 2 :(得分:0)
你最后错过了} 。只需在最后一行之后放一个},就像这样:
echo '<a href="cats.php?cat='.$piecesid[$i].'&parent='.$parent'&position='.$piecesposition[$i].'>'.$piecesname[$i];
}
答案 3 :(得分:0)
顺便说一下,你的表中不需要cats_position。 要处理这样的分层数据,您可以使用嵌套集(http://en.wikipedia.org/wiki/Nested_set_model)或仅依赖parent_id。 这样做的好处是,您在获取查询中不需要多个参数。而不是
cat=4&parent=2&position=1>2>4>
然后你用下面的方法做到了:
cat=4
答案 4 :(得分:0)
我相信这正是他所寻找的:
&lt;?php
$cat = mysql_real_escape_string($_GET['cat']); $res = mysql_query("select id,name,parent_id from categories where id = '$cat'"); $breadcrumb = array(); while ($category = mysql_fetch_object($res) { $breadcrumb[] = "<a href=\"?cat={$category->id}\">" . $category->name . "</a>"; if ($category->parent_id != 0) { $res = mysql_query("select id,name,parent_id from categories where id = '{$category->parent_id}'"); } } echo join(" > ", array_reverse($breadcrumb));
&GT;