我有一张表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
答案 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