我试图在一个表中显示来自MySQL数据库的图像,三个到一行。我能够做到这一点,但问题是我的原始代码已经有了它,所以如果你的MySQL表中只有一行,那么无论如何它会每行运行三次代码并留下两个空<td>
个(如果有两行,请留空一个)。我试图运行一个循环,说如果剩下的行少于三行,那么多次运行循环并退出。我一遍又一遍地查看这段代码,然后对自己说了一遍,但似乎无法找到问题所在。我得到的错误是它无限地运行循环。我目前有两行,所以它正在做的是每<tr>
运行一次循环,但永远。
我认为在$ rowcounter中添加3会停止循环。 $ 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
?>
答案 0 :(得分:2)
您的$rowcounter+3;
没有增加$rowcounter
。改为 -
$rowcounter +=3;
原样$rowcounter+3;
只有在你回应
echo $rowcounter+3; // would echo 3 each time
您还在while循环中设置$counter
while($rowcounter<=$num_rows_temp){
$remaining=$num_rows_temp-$rowcounter;
$counter=1;
所以即使你通过
来增加它$counter++;
一旦再次启动1
循环,它将被设置回while()
。您需要在while()
之前声明这一点。