我有问题,第一行错过了<tr>
,然后有一行,然后有一个</tr>
,然后它与一个<tr>
和两行完美配合</tr>
等等。如何更改代码以使其工作?
使用“div”代替“table”的任何想法?
<table width="300" border="0" cellspacing="2">
<tbody>
<?
$query = mysql_query("SELECT * FROM pages ORDER BY id ASC");
while($r = mysql_fetch_array($query))
{
if(++$s % 2 == 0) { echo '<tr>'."\r\n"; }
echo '<td> · <a href="http://'.$r['domain'].'">'.$r['domain'].'</a> </td>'."\r\n";
if(++$i % 2 != 0) { echo '</tr>'."\r\n"; }
}
?>
</tbody>
</table>
答案 0 :(得分:0)
使用$s++
代替++$s
,因此您需要在>>之前测试值。并且不需要使用单独的$i
变量,您可以使用相同的$s
变量而不增加它。
$s = 0;
while ($r = mysql_fetch_array($query)) {
if ($s++ % 2 == 0) {
echo "<tr>\r\n";
}
echo '<td> · <a href="http://'.$r['domain'].'">'.$r['domain'].'</a> </td>'."\r\n";
if ($s % 2 == 0) {
echo "</tr>\r\n";
}
}
// If we ended loop without closing the row, do it now
if ($s % 2 == 0) {
echo "</tr>\r\n";
}
答案 1 :(得分:0)
听起来你正试图建立一个2列的表?你不需要两个计数器,一个会做:
$cells = 0;
while(...) {
if (($cells % 2) == 0) {
echo '<tr>'; // start a new row for cells 0, 2, 4, etc...
}
echo '<td> ....';
if (($cells % 2) == 1) {
echo '</tr>'; // close the row after outputting cells 1,3,5,etc...
}
$cells++;
}