2013-02-24 49 views
2

我想在表中顯示來自數據庫的4個圖像(2 * 2)我知道該怎麼做。但我也有特殊情況(如果圖片少於4張,它會顯示默認圖片,以顯示4張圖片)在while循環中設計表

我在while循環中管理它。如果有4張圖像沒有問題,它可以正常工作,但當圖像較少時(這意味着默認圖像總共可以完成4張圖像),它不起作用。我無法弄清楚如何做到這一點。

任何幫助?

<table> 
<tr> 
<?php        
$todisplay = 4; 

$query = mysql_query("select * from Images where Country_ID=$co_id LIMIT 0,4;"); 

while ($row = mysql_fetch_array($query)) { 
$x++; 
echo "<td><img src='".$row['I1_Th'] . "'/></td>"; 
$displayed_number++; 
if ($x % 2==0) { 
echo "</tr><tr>";} 
} 

echo str_repeat("<td> 
<img src='images/png/defthumb.png'> </td>", $todisplay-$displayed_number); 
?> 
</tr></table> 

回答

1

而不是循環查詢返回的行,爲什麼不循環四次並試圖獲取一行?

<table> 
<tr> 
<?php        
$tablerows = 2; 

$query = mysql_query("select * from Images where Country_ID=$co_id LIMIT " + ($tablerows * 2) + ";"); 

for ($x = 1; $x <= ($tablerows * 2); $x++) { 
    if ($row = mysql_fetch_array($query)) { 
    echo "<td><img src='".$row['I1_Th'] . "'/></td>"; 
    } else { 
    echo "<td><img src='images/png/defthumb.png'></td>"; 
    } 
    if ($x % 2==0 && $x != $tablerows * 2) { 
    echo "</tr><tr>";} 
} 
?> 
</tr></table> 
+0

謝謝!奇蹟般有效。 – user1813286 2013-02-24 20:42:38

+0

您可能希望使用變量來確定行數(而不是要顯示的圖像數量),以確保每行總是有兩列,例如,上面的更新。 – adamdunson 2013-02-24 20:50:52

2

你離它不遠 - 只需創建另一個循環來完成同樣的事情,但是使用默認圖像。另外,$displayed_number似乎與$x保持相同的值,所以我將其刪除。

<table> 
<tr> 
<?php        
$todisplay = 4; 

$query = mysql_query("select * from Images where Country_ID=$co_id LIMIT 0,4;"); 
$x = 0; 

while ($row = mysql_fetch_array($query)) { 
$x++; 
echo "<td><img src='".$row['I1_Th'] . "'/></td>"; 

if ($x % 2==0) { 
echo "</tr><tr>";} 
} 

while ($x < $todisplay) { 
$x++; 
echo "<td><img src='images/png/defthumb.png'/></td>"; 
if ($x % 2==0) { 
echo "</tr><tr>";} 
} 
?> 
</tr></table> 
+0

尊敬的都鐸王朝,此代碼製作2 * 2表,但默認圖片再次顯示下面的行4次。 – user1813286 2013-02-24 20:40:39