每隔一行更改一次

时间:2016-05-19 21:49:42

标签: php row

我有问题,第一行错过了<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> &middot; <a href="http://'.$r['domain'].'">'.$r['domain'].'</a> </td>'."\r\n";
                if(++$i % 2 != 0) { echo '</tr>'."\r\n"; }
                }
?>

</tbody>
</table>  

2 个答案:

答案 0 :(得分:0)

使用$s++代替++$s,因此您需要在>之前测试值。并且不需要使用单独的$i变量,您可以使用相同的$s变量而不增加它。

$s = 0;
while ($r = mysql_fetch_array($query)) {
    if ($s++ % 2 == 0) {
        echo "<tr>\r\n";
    }
    echo '<td> &middot; <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++;
}