2012-02-23 62 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個」單元格,也可以正確關閉該行。