在colspan中显示php记录

时间:2012-01-10 08:13:57

标签: php mysql html record html-table

我有一个来自数据库的记录,包含id和name,我希望它输出 在一个colspan上,其中所有记录都以1-2-1-2-4的方式分发。我提供http://imageshack.us/photo/my-images/42/wrongb.png/的程序列表如下:

<table border="1" cellspacing="0" cellpadding="0" width="200">
$itemCount = 0;
$itemIndex = 0;
$colSpan = 0;  
$itemColCount = 0;
while ($itemCount < $total) { // $row = mysql_fetch_array($result)
$row = mysql_fetch_array($result)
<tr>
if ($itemIndex == 0 || $itemIndex == 2) 
{
      $colSpan=4;
      $itemColCount = 1;
      $itemIndex++;
  }
  else if ($itemIndex == 1 || $itemIndex == 3) {
      $colSpan=2;
      $itemColCount = 2;
      $itemIndex++;
  } 
  else {
      $colSpan=0;
      $itemColCount = 4;
      $itemIndex = 0;
  }
  while ($itemColCount > 0) 
  {
      if ($colSpan > 0) 
      { 
          print "<td colspan=\"$colSpan\">$itemCount".$row['name']."</td>"; // $row['itemName']

      } 
      else 
      {
          print "<td>item$itemCount".$row['name']."</td>";  // $row['itemName']
      }
      $itemCount++;
      $itemColCount--;
  }
  $itemColCount = 0;
  $colSpan = 0;
  print "\n";
 </tr>
}
</table>

我需要有关如何实现所需程序输出的帮助。我需要完成的是http://img828.imageshack.us/img828/4411/correctj.png

1 个答案:

答案 0 :(得分:0)

由于您的表似乎有一个非常具体的布局,我建议您只是将数据放入预定义的模板,而不是使用条件检查来动态确定要打印的内容。作为副作用,它变得更容易阅读和使用。

您需要先将行数据临时保存到数组中,以便可以一次访问所有数据,而不是以mysql结果集的线性方式运行。如果结果集的大小发生变化,这种方法会中断,但原始解决方案也会发生变化。

while($row = mysql_fetch_array($result)) {
$data[] = $row;
}

print 
'<table border="1" cellspacing="0" cellpadding="0" width="200">
    <tr><td colspan="4">'.$data[0]['name'].'</td></tr>
<tr><td colspan="2">'.$data[1]['name'].'</td>
    <td colspan="2">'.$data[2]['name'].'</td></tr>
<tr><td colspan="4">'.$data[3]['name'].'</td></tr>
<tr><td colspan="2">'.$data[4]['name'].'</td>
    <td colspan="4">'.$data[5]['name'].'</td></tr>
<tr><td>'.$data[6]['name'].'</td>
    <td>'.$data[7]['name'].'</td>
    <td>'.$data[8]['name'].'</td>
    <td>'.$data[9]['name'].'</td></tr>

';

如果可能的话,最好从数据库返回一行中的数据,以便您可以访问一行中的列,而不是10行中的一列。那么你就不会遇到依赖条件来产生html的情况。如果您也是DB端的作者,您应该考虑这一点。如果DB不在您的控制之下,那么您只需要处理它就可以了。