我的前臂需要一点帮助


i need a little help on foreach

这是我在mysql 中的猫

cats_id   cats_position   cats_parentid 
1            1>                0
2            1>2>              1
3            3>                0
4            1>2>4>            2

我正在尝试创建一个类似于的导航

索引>汽车>菲亚特>平底船

来自

cat=4&parent=2&position=1>2>4>

我最终得到:

索引carcarcar

我的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];
}

您的第一个错误是这里缺少分号:

$i++;

第二个错误是回波线中$parent之后的一个缺失点:

     '&parent='.$parent.'&position='

当您开始正确缩进代码时,第三个(意外结束)错误将变得明显。省略大括号也是一种糟糕的风格,因为这会使精确查找此类错误变得更加困难。

最后:在Stackoverflow上发布时,包括完整错误消息(总是提到行号!)

我相信这就是他想要的:

  1. 创建一个包含id、parent_id和name字段的mysql表
  2. 当一个类别是另一个类别的"子"时,其他类别的parent_id字段应该相应地设置,我认为您已经有了这样的效果
  3. 使用此代码,通过$_GET['cat']或其他方式设置$cat

<?php

$cat=mysql_real_sescape_string($_GET['cat']);$res=mysql_query("从id='$cat'的类别中选择id、name、parent_id");$breadcrumb=array();while($category=mysql_fetch_object($res){$breadcrumb[]="<a href=''"?cat={$category->id}''">"$category->名称。"</a>";if($category->parent_id!=0){$res=mysql_query("从id='{$category->parent_id}'的类别中选择id、name、parent_id");}}echo-join(">",array_reverse($breadcrumb));

>

您在最后一个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
?>

结尾缺少一个}。只需在最后一行后面放一个},如下所示:

echo '<a href="cats.php?cat='.$piecesid[$i].'&parent='.$parent'&position='.$piecesposition[$i].'>'.$piecesname[$i];
}
顺便说一句,表中不需要cats_position。要处理这样的分层数据,可以使用嵌套集(http://en.wikipedia.org/wiki/Nested_set_model)或者仅仅依赖parent_id。这样做的优点是,例如,在get查询中不需要多个参数。代替
cat=4&parent=2&position=1>2>4>

然后你归档相同的:

cat=4