略去其他代码$st = array(); // 用于缓存
$i = 0; // 计数器
$k = 4; // 计数器上限
while($r=mysql_fetch_array($q)){
  if($i < $k)
    $st[$i] = "<tr><td>".$r[???]."</td>";
  else
    echo $st[$i-$k].><td>".$r[???]."</td></tr>";
  $i++;
  if($i >= $k*2)
    $i = 0;
}
这里还需处理记录数不能被$k*2整除时的情况

解决方案 »

  1.   

    <table>
    <tr>
    <?
    $i=0;
    while ($data=@mysql_fetch_object($rs))
    {
    echo "<td>$data->username</td>";
    if($i++%2)
    echo "</tr><tr>";
    }
    </tr>
    </table>
      

  2.   

    while($r=mysql_fetch_array($q)){  ?>
    <table width="260" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>
      <? $i=0;
    $numman=mysql_query("select count(*) from online where room=$r[0]");
    $num=mysql_result($numman,0);
    if($num>40) {$num=$num."已满";}
    echo "<input type='radio' value=$r[0]  name='room' checked>$r[1] ($num)<br>";
    $i++; 
    if($i==4)
    {echo "</td><td>" ;}
    }
    呵呵 好傻 我的$i=0应该放在while外面的