2012-02-23 67 views
0

我试图建立一个动态使用PHP的5x6表。现在我得到我的桌子是1x30。我可能错过了一个if语句或者其他的东西,但是无法弄清楚。有一点帮助会很大。构建一个5x6动态HTML表

$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

+0

这是作业吗? – 2012-02-23 02:23:47

+0

我不知道他们在课堂上教php。 – phpmeh 2012-02-23 02:27:29

+0

@JamesMontagne是詹姆斯。我遇到了一些麻烦。从来不必在之前格式化表格数据。在看了一些人们放在下面的例子之后,我现在就明白了。 – 2012-02-23 02:38:24

回答

2

要打印一个新行,并与这条线每条记录:

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

如果你想有一个5×6的表,那么你就必须在一列中添加计数器:

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

确实有更有效的方法来解决这个问题,但我试着让你的代码保持机密,以便你更好地理解你的问题。

+0

谢谢疯子。这使我意识到我做错了什么。我知道我只用了一个td,但在试图找出一种动态创建更多方法的时候出现了脑部抽筋。 – 2012-02-23 02:39:54

1

演示我认为你需要更多的TD的:

Print "<tr><td>".$info['name'] . "</td><td><img src=".$info['pictureURL'] . " /></td><td>and</td><td>so</td><td>on</td></tr>"; 
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++; 
} 

这将只打印<tr>标签,当你的电池是偶数倍6,说明您已达到该行的末尾。

您需要一些额外的特殊外壳来处理打印的第一行,所以您在表格的开头没有悬挂的</tr>,但这应该足以让您开始。您还需要对最后一行进行特殊处理,所以即使它不是当前正在打印的“第6个”单元格,也可以正确关闭该行。