2011-06-16 62 views
0

我正在嘗試爲包含景觀和個人資料照片的朋友組合一個照片組合。 我有一張SQL表格,裏面有照片的詳細信息,包括一列說明照片是水平的還是垂直的。重新排列MySQL數據以適合每行有不同列數的4列表格(使用colspan)

表格行被分組爲3: 表格的第一行顯示了4張垂直圖片。 第2行顯示1個垂直圖像,1個水平圖像,其中colspan爲2,然後是另一個垂直圖像。 第3排顯示4張垂直照片。

根據需要重複上述模式。

我可以通過使用下面的代碼將表格限制爲4列,併爲水平照片添加一個colspan,但它不是按照正確的順序 - 它也會丟失第一個記錄。

任何幫助,將不勝感激!

<?php 
$cols = 4; // number of columns 
$c = 1; 
echo "<table border=1>"; 
echo "<tr>"; 
while ($row_photos = mysql_fetch_assoc($photos)) { 
    if ($row_photos['photo_type'] == "Vertical") { 
    echo "<td>".stripslashes($row_photos['photo_file'])."&nbsp;".stripslashes($row_photos['photo_type'])."</td>"; 
    } 
    elseif ($row_photos['photo_type'] == "Horizontal") { 
    echo "<td colspan=\"2\">".stripslashes($row_photos['photo_file'])."&nbsp;".stripslashes($row_photos['photo_type'])."</td>"; 
    $c++; 
    } 
    if ($c == $cols) { 
     echo "</tr><tr>"; 
     $c = 1; 
    } else { $c++; } 
} 
echo "</tr>" ; 
echo "</table>"; 
?> 
+0

你應該簡單地把圖像放在那裏並設置填充。沒有需要的桌子! – Brad 2011-06-16 21:51:58

+0

您想要將c更改爲0.否則,在第一張圖片c爲2之後,在第二張圖片c爲3之後,在第三張圖片之後,它已經在4並且創建一個新的行。對於這個命令,原因可能在你的SQL查詢中? – Dan 2011-06-16 21:56:33

+0

您所描述的內容要求數據庫中的記錄完全按照正確的順序排列。你確定他們是? – jeroen 2011-06-16 21:58:17

回答

0

有幾個問題:

  1. @丹是正確的,你需要改變$c爲0或使用>代替==;
  2. 您在每個循環中而不是1中添加2個$c,在if語句之前添加2個,並且在else語句中一次;
  3. 如果數據庫中記錄的順序不完全正確,循環將失敗。我建議循環所有記錄一次以生成2個陣列,一個是水平照片,另一個是垂直照片。然後你可以調整你的循環,並從適當的數組中選擇一張照片。