构建一个5x6动态HTML表

时间:2012-02-23 02:21:19

标签: php html dynamic html-table

我正在尝试使用PHP动态构建一个5x6的表。现在我的桌子是1x30。我可能错过了一个if语句或者其他东西,但却无法理解。一点点帮助会很棒。

 $data = mysql_query("SELECT * FROM product") 
 or die(mysql_error());
 $info = mysql_fetch_array( $data );
 print "<table border cellpadding='0' cellspacing='0'>";
 while($info = mysql_fetch_array( $data )) 
 { 
 Print "<tr><td>".$info['name'] . "  <br /><img src=".$info['pictureURL'] . " /></td></tr>"; 
 }

print "</table>";

以下是http://nova.it.rit.edu/~mpb8676/FinalProject/compare.php

的演示

3 个答案:

答案 0 :(得分:2)

您正在使用以下行为每条记录打印一个新行:

Print "<tr><td>".$info['name'] . "  <br /><img src=".$info['pictureURL'] . " /></td></tr>";

如果你想要5x6表,那么你必须添加一个列计数器:

$data = mysql_query("SELECT * FROM product") 
or die(mysql_error());
$info = mysql_fetch_array( $data );
print "<table border cellpadding='0' cellspacing='0'>";
$numCols = 5;   // Max number of columns
$colCount = 0;  // Current column count (the counter)
while($info = mysql_fetch_array( $data )) 
{ 
    if ($colCount == 0) {
        Print "<tr>";
    }

    Print "<td>".$info['name'] . "  <br /><img src=".$info['pictureURL'] . " /></td>";

    $colCount++;

    if ($colCount >= $numCols) {
        Print "</tr>";
        $colCount = 0;
    }
}

print "</table>";

肯定有更有效的方法可以解决这个问题,但我努力让您的代码保持清醒,以便您更好地了解您的问题。

答案 1 :(得分:1)

我相信你需要更多的td:

  Print "<tr><td>".$info['name'] . "</td><td><img src=".$info['pictureURL'] . " /></td><td>and</td><td>so</td><td>on</td></tr>"; 

答案 2 :(得分:0)

您需要特别对待<tr>。您正在为查询中的每个结果输出单个细胞行。相反,你需要:

$cells_printed = 0;
while($info = mysql_fetch_array( $data )) {
   if ($cells_printed % 6 == 0) {
      echo '</tr><tr>'; // start a new row
   }
   echo '<td>blahblahblah</td>';
   $cells_printed++;
}

当你所在的单元格是6的偶数倍时,这只会打印<tr>标签,表示你已经到达了行尾。

您需要一些额外的特殊外壳来处理打印的第一行,因此您在表格的开头没有悬空</tr>,但这应该足以让您入门。您还需要对最后一行进行特殊情况处理,因此即使不是在该点打印的“第6个”单元格,也要正确关闭该行。