嵌套的foreach循环和交叉变量

时间:2015-11-13 23:08:33

标签: php foreach

我是新手,所以请耐心等待我(即使我知道这不是借口)

我有一个嵌套的foreach循环的问题(知道不推荐嵌套的foreach循环,但我只能这样做)。

我有两个表“类别”和“部分”,其中每个部分都有一个拥有它们的类别。我尝试通过一个foreach循环调用每个类别,并在每个另一个foreach循环中调用那个类别的部分给出调用的地方,就像这样(不是实际的代码,因为我说西班牙语并且我的语言中有很多热量而且我有使用单独文件的功能,但类似的东西)

Foreach($category as $category){
    echo category;

       Foreach (getsection(section[category] = category) as section){
           Echo section;
       }
}

编辑:对不起,我的不好问题是类别显示但是部分不是,我找不到原因,它不会使用数组但使用相同的函数获取数据的MySQL表从两个不同的表(正确分开),所以错误必须以某种方式嵌套。

2ºedit:所以为了避免更多错误,这是我的实际脚本:

    <?php
        foreach (tomarcategorias() as $order =>$categorias){
            $name = $categorias['name'];
            $id = $categorias['id'];
            $order =$categorias['order'];

            $prev = tomarcategoria('order', ($order-1));
            $next = tomarcategoria('order', ($order+1));

            ?>

            <tr>

            <td  style="padding-right: 10px; text-align: center;"><?php echo $categorias['order'], '<br>'; ?></td>

            <td style="padding-left: 10px; border-right:none;"><?php echo $categorias['name'], '<br>'; ?></td>

            <td style="border-left:none;">

                <a href="downupcat.php?actyon=up&id=<?php echo $categorias['id'];?>&prev=<?php echo $prev['id'];?>"><img src="img/iconos/up.png" alt="subir" height="14" width="14"></a>                                <a href="downupcat.php?actyon=down&id=<?php echo $categorias['id'];?>&next=<?php echo $next['id'];?>"><img src="img/iconos/down.png" alt="bajar" height="14" width="14"></a> 
                <a href="deletecat.php?id=<?php echo $categorias['id'];?>"><img src="img/iconos/borrarcerrar.png" alt="borrar" height="14" width="14"></a>
            </td>
            <?php
            foreach(tomarsecciones() as $secciones){
            ?>
            <tr>
                <td><?php echo $secciones['name'];?></td>
            </tr>
            </tr>
    <?php
        }
        }

4ºedit:(不知道如何把它放在下面,只是希望把它做对......

Ian,我做了改变,实际上并没有真正看到它,但最后没有改变任何东西,显然,谢谢你向我展示了便利。对此做了一点改动,我忘了将交叉数据和值放在脚本的第一个(实际上是第三个)时间,就像这样:

            foreach(tomarsecciones('idcategoria', $id) as $secciones){

以防万一该函数的脚本是下一个,但我对类别使用相同的东西并且它工作得很好,它在一切都变坏了:

函数tomarsecciones($ data,$ value){

$secciones = array();

$query = mysql_query("SELECT `id`, `name`, `order`, `idcategoria` FROM `secciones` ORDER BY `order` WHERE `$data` = '$value'");

while($row = mysql_fetch_assoc($query)){
    $secciones[]=$row;

}
return $secciones;

}

1 个答案:

答案 0 :(得分:0)

好吧,我的(noobie)错误。错误是在函数mysql调用中的行为,看起来调用或“命令”必须在“where”之后依法进行,所以我的查询是:

$query = mysql_query("SELECT `id`, `name`, `order`, `idcategoria` FROM `secciones` ORDER BY `order` WHERE `$data` = '$value'");

它适用于:

$query = mysql_query("SELECT `id`, `name`, `order`, `idcategoria` FROM `secciones` WHERE `$data` = '$value' ORDER BY `order`");

我知道似乎没有人关心它,如果有人在将来寻找它,它必须有用。