2010-04-19 55 views
4

这是我的代码:如何在每5个结果后插入<br/>?

$query = mysql_query("SELECT * FROM books ORDER BY id") or die(mysql_error()); 
while($row = mysql_fetch_assoc($query)) { 
echo $row["bookname"]." - "; 
} 

如何使仅5中的每一行显示的书籍,在开始插入
如果行是5或10或15等...

谢谢

回答

7

你可以保持循环次数(每次增加一个变量)。

比较值模数5.如果结果为0输出的

$rowCounter = 1; 

while($row = mysql_fetch_assoc($query)) { 
    echo $row["bookname"]." - "; 

    if($rowCounter % 5 == 0) { 
     echo "<hr />"; 
    } 

    $rowCounter++; 
} 
2

一个简单的办法是有一个计数器增量...并检查它的MOD(%)与5

所以

if (i % 5 == 0) echo $row["bookname"]; 
1
$query = mysql_query("SELECT * FROM books ORDER BY id") or die(mysql_error()); 
$counter=1; 
while($row = mysql_fetch_assoc($query)) { 
echo $row["bookname"]." - "; 
if($counter%5==0){echo "<br/>";} 
$counter++; 
} 
0

较短版本的迈克尔代码:

$rowCounter = 0; 

while ($row = mysql_fetch_assoc($query)) { 
    echo $row["bookname"] . ' - '; 

    if (++$rowCounter % 5 == 0) { 
     echo '<br />'; 
    } 
} 

又一替代:

$rowCounter = 1; // not sure if this should be 1 or 0 
// 1 is correct, check comments 

while ($row = mysql_fetch_assoc($query)) { 
    echo $row["bookname"] . ' - '; 

    if ($rowCounter++ % 5 == 0) { 
     echo '<br />'; 
    } 
} 
+0

你想开始你的第二个例子为零,因为你在评估它之前递增它。 – 2010-04-19 05:56:14

+0

@Michael:不是,请查看http://ideone.com/goPDH为0,http://ideone.com/sTiq1为1. =)前/后增量操作符有时可能会非常棘手。 – 2010-04-19 07:26:09

1

michaels代码的优化版本! :)

$rowCounter = 0; 
$possibleHR = array("","","","","<hr/>"); 

while($row = mysql_fetch_assoc($query)) { 
    echo $row["bookname"]." - ".$possibleHR[($rowCounter++) % 5]; 
} 
相关问题