Php 构建5x6动态HTML表

Php 构建5x6动态HTML表,php,html,dynamic,html-table,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(

我正在尝试使用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>";
$data=mysql\u查询(“从产品中选择*)
或者死(mysql_error());
$info=mysql\u fetch\u数组($data);
打印“”;
而($info=mysql\u fetch\u数组($data))
{ 
打印“$info['name']”。
; } 打印“”;

下面是一个演示它的外观

我相信您需要更多td:

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

我认为您需要更多td:

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

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

$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++;
}
$cells\u printed=0;
而($info=mysql\u fetch\u数组($data)){
如果($cells\u打印%6==0){
回显“”;//开始新行
}
回音“blahblahblah”;
$cells_printed++;
}
当您所在的单元格是6的偶数倍时,这将仅打印
标记,表示您已到达该行的末尾


您需要一些额外的特殊外壳来处理打印的第一行,这样您就不会在表格的开头有一个悬垂的
,但这应该足以让您开始。您还需要对最后一行进行特殊的案例处理,因此您可以正确地关闭该行,即使此时打印的不是“第六”单元格。

您需要对
进行特殊处理。对,您正在为查询中的每个结果输出一个单单元格行。相反,您需要:

$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++;
}
$cells\u printed=0;
而($info=mysql\u fetch\u数组($data)){
如果($cells\u打印%6==0){
回显“”;//开始新行
}
回音“blahblahblah”;
$cells_printed++;
}
当您所在的单元格是6的偶数倍时,这将仅打印
标记,表示您已到达该行的末尾


您需要一些额外的特殊外壳来处理打印的第一行,这样您就不会在表格的开头有一个悬垂的
,但这应该足以让您开始。您还需要对最后一行进行特殊的案例处理,因此您可以正确地关闭该行,即使此时打印的不是“第六个”单元格。

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

Print "<tr><td>".$info['name'] . "  <br /><img src=".$info['pictureURL'] . " /></td></tr>";
Print'.$info['name']。“
”;
如果需要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>";
$data=mysql\u查询(“从产品中选择*)
或者死(mysql_error());
$info=mysql\u fetch\u数组($data);
打印“”;
$numCols=5;//最大列数
$colCount=0;//当前列计数(计数器)
而($info=mysql\u fetch\u数组($data))
{ 
如果($colCount==0){
打印“”;
}
打印“$info['name']”。
; $colCount++; 如果($colCount>=$numCols){ 打印“”; $colCount=0; } } 打印“”;

确实有更有效的方法来实现这一点,但我试图使您的代码保持得体,以便您更好地了解问题所在。

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

Print "<tr><td>".$info['name'] . "  <br /><img src=".$info['pictureURL'] . " /></td></tr>";
Print'.$info['name']。“
”;
如果需要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>";
$data=mysql\u查询(“从产品中选择*)
或者死(mysql_error());
$info=mysql\u fetch\u数组($data);
打印“”;
$numCols=5;//最大列数
$colCount=0;//当前列计数(计数器)
而($info=mysql\u fetch\u数组($data))
{ 
如果($colCount==0){
打印“”;
}
打印“$info['name']”。
; $colCount++; 如果($colCount>=$numCols){ 打印“”; $colCount=0; } } 打印“”;

当然有更有效的方法可以做到这一点,但我尽量让您的代码保持得体,以便您更好地了解您的问题所在。

我不知道他们在课堂上教授php。@JamesMontagne Yes james。我有点麻烦。以前从未格式化过表数据。在看了下面的一些例子后,我现在明白了。我只是问了一下,因为有一个家庭作业标签。我本来想加上,但不是100%确定。添加家庭作业标签可以让人们知道你在学习,并且应该会有更深入的解释。哦,好的,是的,这是家庭作业。对不起,我不知道上面有标签。我不知道他们在课堂上教php。@JamesMontagne是的,james。我有点麻烦。以前从未格式化过表数据。在看了下面的一些例子后,我现在明白了。我只是问了一下,因为有一个家庭作业标签。我本来想加上,但不是100%确定。添加家庭作业标签可以让人们知道你在学习,并且应该会有更深入的解释。哦,好的,是的,这是家庭作业。对不起,我不知道上面有标签。谢谢你,疯子。这巧妙地让我意识到我做错了什么。我知道我只使用了一个td,但当我试图找出一种动态创建更多td的方法时,大脑抽筋了。谢谢你,疯子。这巧妙地让我意识到我做错了什么。我知道我只使用了一个td,但在试图找到一种动态创建更多td的方法时,我的大脑抽筋了。