【发布时间】:2012-11-25 07:30:57
【问题描述】:
我正在尝试在表格中显示来自 MySQL 数据库的图像,三到一行。我能做到,但问题是我的原始代码有它,所以如果你的 MySQL 表中只有一行,它无论如何都会每行运行代码三次,并留下两个空的<td>(和如果您有两行,则留一空)。我试图运行一个循环,如果剩余的行少于三行,则运行循环多次并退出。我一遍又一遍地查看这段代码并自言自语,但似乎找不到问题所在。我得到的错误是它无限运行循环。我目前有两行,所以它正在做的是每个 <tr> 运行循环两次,但永远。
我认为将 3 添加到 $rowcounter 会停止循环。 $rowcounter 从 0 开始,循环运行。 3 被添加到 $rowcounter (使其变为 3),这将使其大于 $num_rows_temp (因为只有两行,所以将是 2)并且循环不会执行。同样,问题必须出在第一个 while 循环中,因为它会在我的表中无限生成新行...是否有 $rowcounter 不会添加 3 的原因?
(另外,请忽略 fetch_arrays 下的变量声明。一旦我让循环正常工作,这些将用于功能。虽然它们现在看起来很无聊......)
有人可以帮我弄清楚我在这里有什么问题吗?非常感谢。
<?php
$rowcounter=0;
if($num_rows_temp==0){
echo "No pictures yet!";
}
else{
//BEGIN JOB POSTING
while($rowcounter<=$num_rows_temp){
$remaining=$num_rows_temp-$rowcounter;
$counter=1;
echo "<tr>";
//IF THE REMAINING AMOUNT OF ROWS IS LESS THAN THREE, RUN THE WHILE LOOP
//FOR THE AMOUNT OF REMAINING ROWS
if ($remaining>0 && $remaining<3){
while($counter<=$remaining){
$row_temp = mysqli_fetch_array($result_temp, MYSQL_NUM);
$id = $row_temp[0];
$location = $row_temp[1];
$name = $row_temp[2];
$email = $row_temp[3];
echo "<td>
<a href='".$location."'>
<img class=\"g-thumbnail\" src='".$location."' width=\"200\" height=\"200\" />
</a>
</td>";
$counter++;
} //END WHILE
} //END IF
else{
while($counter<=3){
$row_temp = mysqli_fetch_array($result_temp, MYSQL_NUM);
$id = $row_temp[0];
$location = $row_temp[1];
$name = $row_temp[2];
$email = $row_temp[3];
echo "<td>
<a href='".$location."'>
<img class=\"g-thumbnail\" src='".$location."' width=\"200\" height=\"200\" />
</a>
</td>";
$counter++;
} //END WHILE
} //END ELSE
echo "</tr>";
$rowcounter+3;
} //END WHILE
} //END ELSE
?>
【问题讨论】:
-
您没有将 3 添加到行计数器中,而是将其设置为 3。尝试执行 "$rowcounter += 3;"而是。
-
@FreudianSlip 也没有将其设置为 3。
$rowcounter+3;什么都不做。
标签: php mysql loops while-loop