我正在尝试学习php,并且我正在从事此练习。我有一个带有两个表的SQL数据库:类别和项目。我想遍历类别并为每个类别创建一个html表。我可以做得很好。然后针对每个类别,我要遍历每个项目并检查它是否属于该类别。如果是这样,则将其传递到表中。但是,由于某种原因,第二个循环仅针对第一类运行。
我尝试在项目上使用foreach循环,但是什么都没有出现。
<?php while($category = mysqli_fetch_assoc($category_result)) : ?>
<button class="collapsible"><?= $category[Name]; ?></button>
<div class="link-data">
<table class="link-table">
<?php while($item = mysqli_fetch_assoc($items_result)) : ?>
<?php if (item[category_id] = category[id] ) : ?>
<tr>
<td><?= $item[name]; ?></td>
<td><?= $item[price]; ?></td>
<td><?= $item[description]; ?></td>
</tr>
<?php endwhile; ?>
<?php endif; ?>
</table>
</div>
<?php endwhile; ?>
然后我会期望得到这样的结果,例如:
Phones :
- Samsung
Toys :
- Rubber ball
Books :
- Harry Potter
相反,我得到这个:
Phones :
- Samsung
- Rubber ball
- Harry Potter
Toys :
Books :
答案 0 :(得分:1)
对于第一次之后的内部循环,item_result指针将结束,如果要再次循环,则必须将其重置。
因此在添加内容之前在内部
mysqli_data_seek($items_result, 0);
此行将item_result指针设置为第一行