作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我要用 PHP 解决一个可能简单得可笑的问题,但我的大脑不会参与。
我将产品分为几类。我执行了一个成功的查询,它为我提供了一个数组,其中包含加入各自类别的产品。现在我想按类别显示它们,将每个类别分成它自己的 div
。我有以下代码:
$current_category = 0;
do
{
if($current_category != $row['category_id']){
echo '<div class="block">
<div class="menu">
<h4>'.$row['category_name'].'</h4>
<ul>';
do
{
echo '<li><a>'.$row['product_name'].'</a></li>';
}
while ($row['category_id'] == $current_category);
$current_category++;
//close list and divs
echo '</ul>
</div>
</div>';
}
}
while ($row = $stmt->fetch(PDO::FETCH_ASSOC));
但这只会输出每个类别中的第一个产品,而不是输出所有产品然后继续下一个。我做错了什么?
最佳答案
您需要在内循环中获取下一行,而不是在外循环中:
do {
// no need to check we're in the right category - we always are
$current_category = $row['category_id'];
echo '<div class="block">
<div class="menu">
<h4>'.$row['category_name'].'</h4>
<ul>';
do {
echo '<li><a>'.$row['product_name'].'</a></li>';
// !!! get the next row here
$row = $stmt->fetch(PDO::FETCH_ASSOC);
}
while ($row['category_id'] == $current_category);
//close list and divs
echo '</ul>
</div>
</div>';
// !!! and don't get it again here
} while ($row);
您需要确保您的 SQL 查询首先按类别排序
关于php - Do - PHP 中的 While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27546131/
我是一名优秀的程序员,十分优秀!