我正在尝试使用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>";
的演示
答案 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个”单元格,也要正确关闭该行。