php:嵌套while循环的输出太多

时间:2014-09-07 09:32:47

标签: php loops while-loop nested

我有一张表up_vadba,我有一些需要打印的记录。我创建了三个嵌套的while循环(见下文),它返回主类别,子类别和子类别结果。

一切都还可以,除非上一个子类别结果可能会输出太多结果,如果前一个子类别结果的结果比上一个更多 - 我希望你理解我在解释什么? 对于第一个主要类别,我有两个子类别,每个子类别中有两个或更多子类别结果。此代码输出与先前子类别中的子类别结果一样多的子类别结果,而不是正确数量的结果。

我现在用头撞了一下墙几天来解决这个问题,而我似乎无法弄明白。我还使用了mysqli_fetch_array函数,使用了计数器而没有任何帮助。

你们中的任何人都可以看看代码有什么问题吗?谢谢你们,会救我一堵墙:D

$sql="SELECT * FROM up_vadba WHERE upid='$usid' GROUP BY vadba"; //it gets main category
$vadbe=mysqli_query($cxn,$sql) or die ("Nisem uspel izvesti poizvedbe vadb");
while($vadba=mysqli_fetch_assoc($vadbe)) //as long as there is main category
{
  echo "Vadba ".$vadba['vadba']."<br>";
  $sqlvaje="SELECT * FROM up_vadba WHERE upid='$usid' GROUP BY imeVaje"; //it gets subcategory
  $vaje=mysqli_query($cxn,$sqlvaje) or die ("Nisem uspel izvesti poizvedb vaj");
  while($vaja=mysqli_fetch_assoc($vaje)) //as long as there is subcategory
  {
    echo $vaja['imeVaje']."<br>";
    $sqlserije="SELECT * FROM up_vadba WHERE upid='$usid' GROUP BY serija"; //it gets subcategory results 
    $serije=mysqli_query($cxn,$sqlserije) or die ("Nisem uspel izvesti poizvedb serij");
    while($serija=mysqli_fetch_assoc($serije)) //as long as there are subcategory results
        {
        echo "serija".$serija['serija']." ".$serija['ponovitve']." ponovitev<br>";
    }
  }
}

我得到了这个输出:

Vadba 1
- počep
    serija 1
    serija 2
    serija 3
- izpadni korak
    serija 1
    serija 2
    serija 3

而不是:

Vadba 1
- počep
    serija 1
    serija 2
    serija 3
- izpadni korak
    serija 1
    serija 2

2 个答案:

答案 0 :(得分:1)

查看您的上一个查询:

$sqlserije="SELECT * FROM up_vadba WHERE upid='$usid' GROUP BY serija";

您没有更改$usid,因此您每次都会获得完全相同的子类别列表!如果您将sql数据库中的数据编辑为序列号之外的其他数据,则可以更容易地发现。我相信您需要确保$usid与当前$vaja['id']兼容(假设您的子类别)。

通过当前我指的是辅助while循环中的对象。

答案 1 :(得分:1)

是的,是的,它有效,它有效...我只需要在我的上一个声明中添加另一个条件。当我得到15分时,我会投票。非常感谢你。我怎么也记不起那样做? 以下是我添加的内容:

...echo $vaja['imeVaje']."<br>";
$subvaja=$vaja['imeVaje'];
$sqlserije="SELECT * FROM up_vadba WHERE upid='$usid' AND imeVaje='$subvaja' GROUP BY serija"; //as long as there are subcategory results...

再次感谢你们。你把我的墙和我的头从垫子上救了下来:D