1
<?php
$query = "SELECT name FROM prodGroups";
$result = mysql_query($query);
$prodGroups = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $prodGroups[] = $row['name'];
}
if (count($prodGroups) == 0 && (!isset($products))) // IF NO PRODUCT GROUPS EXIST
    for ($j=1 ; $j<4 ; $j++)
    {
        echo "<li><a href='#'><span>Empty product group " . $j . "</span></a></li>";
    }
else // FOR WHEN PRODUCT GROUPS DO EXIST
    foreach ($prodGroups as $aGroup) // CYCLE THROUGH PRODUCT GROUPS
    {
        echo "<li class='submenu'><a href='#'><span>" . $aGroup . "</span></a>";
    }
for ($k=0 ; $k<3 ; ++$k)
{
    $query = "SELECT name FROM products WHERE prodGroup='$prodGroups[$k]'";
    $result = mysql_query($query);

    for ($j=0 ; $j<count($prodGroups) ; ++$j)
    {
        while ($row2 = mysql_fetch_array($result, MYSQL_ASSOC)) // PLACE PRODUCTS INTO AN ARRAY
        {
            $products[] = $row2['name'];
        }
        if (!isset($products)) // IF THERE ARE NO PRODUCTS INSIDE A PRODUCT GROUP
            echo "<ul><li><a href='#'><span>No products</span></a></li></ul></li>";
        else // FOR WHEN PRODUCT(S) DO EXIST INSIDE A PRODUCT GROUP
            echo "<ul>";
            if(isset($products))
                foreach ($products as $item) // CYCLE THROUGH PRODUCTS
                {
                    echo "<li><a href='#'><span>" . $item . "</span></a>";
                }
        echo "</ul>";
    }
}
?>

出于某种原因,我只能在循环的最后一次迭代中显示产品,而不是全部。一个变量显然被覆盖了,但我无法确定是哪个变量,也无法覆盖它?

编辑 现在我已经合并了适当的缩进和花括号,我遇到了所有产品现在只显示在最后一个 prodGroup 而不是相关/适当的产品的问题

4

1 回答 1

3

在你的循环中使用括号,为了你自己的利益,在其他任何地方。

  for ($j=0 ; $j<count($prodGroups) ; ++$j)
        $query = "SELECT name FROM products WHERE prodGroup='$prodGroups[$j]'";
        $result = mysql_query($query); // <- this won't be included in your loop
于 2013-04-29T16:46:34.853 回答