我正在尝试使用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
发布于 2012-02-23 10:29:36
您正在为具有以下行的每条记录打印新行:
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>";当然,还有更有效的方法来解决这个问题,但我尽量让你的代码保持得体,这样你就能更好地理解你的问题所在。
发布于 2012-02-23 10:25:01
我相信你需要更多的td:
Print "<tr><td>".$info['name'] . "</td><td><img src=".$info['pictureURL'] . " /></td><td>and</td><td>so</td><td>on</td></tr>"; 发布于 2012-02-23 10:27:35
你需要特别对待<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”个单元格,也要正确地关闭该行。
https://stackoverflow.com/questions/9406250
复制相似问题