我需要一些关于foreach的帮助

时间:2011-05-28 10:50:21

标签: php

这是我在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];
}

5 个答案:

答案 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)

我相信这正是他所寻找的:

  1. 使用id,parent_id和name字段创建一个mysql表。
  2. 如果某个类别是另一个类别的“子”,则应相应地设置其他parent_id字段,我看到您已经有了相应的效果。
  3. 使用此代码,通过$ _GET ['cat']设置$ cat。
  4. &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;