【问题标题】:Building a 5x6 Dynamic HTML Table构建 5x6 动态 HTML 表格
【发布时间】:2018-01-01 20:34:05
【问题描述】:

我正在尝试使用 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的外观演示

【问题讨论】:

  • 我不知道他们在课堂上教 php。
  • @JamesMontagne 是的詹姆斯。我有点麻烦。以前不必格式化表格数据。在查看了人们在下面放置的一些示例后,我现在明白了。
  • 之所以问,是因为有作业标签。我打算添加它,但不是 100% 确定。添加作业标签可以让人们知道您正在学习,并且应该会导致更深入的解释。
  • 哦,是的,这是家庭作业。抱歉不知道有标签。

标签: php html dynamic html-table


【解决方案1】:

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

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>";

肯定有更有效的方法来解决这个问题,但我尽量保持您的代码完整,以便您更好地了解您的问题。

【讨论】:

  • 谢谢疯子。这绝对让我意识到我做错了什么。我知道我只使用了一个 td,但在试图找出一种动态创建更多的方法时,我的大脑抽筋了。
【解决方案2】:

我相信你需要更多的td:

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

【讨论】:

    【解决方案3】:

    您需要特别对待&lt;tr&gt;。是的,您正在为查询中的每个结果输出一个单元格行。相反,您需要:

    $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 的偶数倍数时打印&lt;tr&gt; 标签,表明你已经到了行尾。

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

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2019-11-19
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      相关资源
      最近更新 更多