2012-07-20 72 views
1

我试图让一个PHP照片库(是的,我试过其他解决方案,没有工作与我想要的设置),我试图让这个while循环停止三次后,因为我想显示三每个表格行的缩略图。这是我目前的代码:PHP while():三次后如何停止?

<table> 
<tr> 
<?php while($row2 = mysql_fetch_assoc($result)) { echo " 
<td><a href='URL/".$row2['file']."'><img src='URL/".$row2['file']."' width='200' height='106' /></a></td> 
"; } ?> 
</tr> 
</table> 

我不记得学习任何有关停止PHP循环,所以请帮助!这将不胜感激。

+0

'break;'停止循环。 – deex 2012-07-20 01:29:38

+0

要清楚 - 你想停止你的循环,或者你想添加一个新的行到你的表?这两者是完全不同的东西,你的评论似乎表明后者。 – 2012-07-20 02:11:59

+0

我想在三张图像后添加另一行,并继续,直到到达第12张图像,即第4行的末尾。 – alexpja 2012-07-20 02:30:01

回答

4

所以,你真正想要的每行3个图像。我认为这将起作用:

<table> 
    <?php 
    $i = 0; 
    while($row2 = mysql_fetch_assoc($result)) { 
     if($i%3==0) 
     echo "<tr>"; 
     echo "<td><a href='URL/".$row2['file']."'><img src='URL/".$row2['file']."' width='200' height='106' /></a></td>"; 
     if($i%3==2) 
     echo "</tr>"; 
     $i++; 
    } 
    if($i%3!=0) 
     echo "</tr>"; 
    ?> 
</table> 
+0

它的工作原理! :噢!但是我怎样才能在第4行/第12张图片上停下来呢?除非它那样... – alexpja 2012-07-20 02:35:26

+0

如果你只想要12张图片,那么我建议你只要将查询限制为12个结果。或者你可以添加if($ i == 12)break; $ i ++之后; – Leon 2012-07-20 02:38:23

+1

在你的SQL查询中加入'LIMIT 12' :) – 2012-07-20 02:38:28

1
<table> 
<tr> 
<?php 
$i=1; 
while($row2 = mysql_fetch_assoc($result)) { echo " 
<td><a href='URL/".$row2['file']."'><img src='URL/".$row2['file']."' width='200' height='106' /></a></td> 
"; 
if($i>=3) break; 
$i++; 

} ?> 
</tr> 
</table> 
+0

顺便说一句,如果你想添加新的表格行,你不需要用'brake'来停止循环。 你可以检查$ i%3 == 0然后关闭并创建新的表格行 – 2012-07-20 01:28:31

+0

$ i%3 == 0 ?对不起,我通常不会使用循环和... – alexpja 2012-07-20 01:38:49

+0

现在,这是解决方案,为我工作,除了这令人困惑的$ i%3 == 0部分大声笑。它确实显示了前三个图像,我知道还有两个图像需要放在第二行......这是我坚持的。 – alexpja 2012-07-20 01:47:38

-1

,你可以添加一个计数器,如:

$nr = 1; 
while($row2 = mysql_fetch_assoc($result)) { 
if ($nr < 4) { 
do your thing; 
} 
$nr++; 
} 
+1

不是很好的解决方案,因为它仍然会从db获得下一个结果 - 但只是不显示它 – 2012-07-20 01:27:25

0

尝试添加并向同时,并比较计数器 而($ 2行= mysql_fetch_assoc($结果)& & $ I < 3)

在循环之前将$ i设置为0

+0

当然,您需要增加计数器$ i在循环内 – rogerlsmith 2012-07-20 01:32:08

+0

不起作用:/ – alexpja 2012-07-20 02:11:48

+0

您可能需要将赋值语句与&&隔离。尝试像这样:while(($ row2 = mysql_fetch_assoc($ result))&&($ i <3)) – rogerlsmith 2012-07-20 02:15:43

0

为什么不限制原始MySQL查询返回的结果?你可以这样加限制你的查询:

limit 3 

这样$结果只会有三个行,以便在内存中无需额外的PHP和数据库的数据较少

+0

是的,但是我需要在第二行再增加3个图像,总共有四行。 4 * 3 = 12图像 – alexpja 2012-07-20 01:37:45

+0

啊,那么在那种情况下,你需要调整你的while循环..设置计数器和每个第三个循环,回显一个关闭并打开​​,然后重置您的计数器为0 ...或使用$ i%3 == 0来确定计数是否可被3整除 – Nick 2012-07-20 02:38:20