2012-11-19 142 views
1

我有以下代碼顯示在數據庫中的producs表中添加的項目,我想讓它每10個項目創建一個新的數組,以便它不會很長項目列表。創建一個新陣列添加每10個項目

$dynamicList = ""; 
$sql = mysql_query("SELECT * FROM products ORDER BY date_added DESC"); 
$productCount = mysql_num_rows($sql); // count the output amount 
if ($productCount > 0) { 
    while($row = mysql_fetch_array($sql)){ 
      $id = $row["id"]; 
      $product_name = $row["product_name"]; 
      $price = $row["price"]; 
      $date_added = strftime("%b %d, %Y", strtotime($row["date_added"])); 
      $dynamicList .= '<table width="100%" border="0" cellspacing="0" cellpadding="6"> 
     <tr> 
      <td width="10%" valign="top"><a href="product.php?id=' . $id . '"><img style="border:#666 1px solid;" src="inventory_images/' . $id . '.jpeg" alt="' . $product_name . '" width="93" height="102" border="1" /></a></td> 
      <td width="90%" valign="top">' . $product_name . '<br /> 
      €' . $price . '<br /> 
      <a class="provoli" href="product.php?id=' . $id . '">Προβολή Λεπτομεριών</a></td> 
     </tr> 
     </table>'; 
+0

查找與「分頁」和sql'LIMIT'和'OFFSET'的東西 – Toni

+0

「所以它不會是一個長長的項目清單」背後有很多原因。如果你能解釋推理,這將有所幫助 - 那麼我們可以給出一個有效的答案。 (如果你正在分頁,你可以通過SQL「限制」結果,你可以有一個數組陣列,但可能不需要,因爲你可以在10個組中進行後處理等) – Robbie

+1

切換到Mysqli或PDO ,然後根據您的需要決定是否要使用數組(例如通過array_chunk)或使用LimitIterator或僅使用SQL的LIMIT。除了你的問題不是很具體。該代碼還混合提取數據並輸出它 - 你應該將它分成兩部分。 – hakre

回答

0

您的代碼風格可以使用一些工作,因爲它是不是很漂亮,但爲了使這項工作,你可以嘗試把在數組列表中。

這需要兩個步驟,第一個是保持索引的記錄。第二個是將值添加到您的新陣列。

$index = 0; 
while(<your condition>) { 
    $index++; 
    <more code> 
    $list[((int)$index/10)] .= <string> 
} 

更好的方法是在打印包含所有項目的數組時執行此操作。但我不知道你如何進一步實施。

+1

什麼時候$ index> = 10 ...碰撞! – Gaui

+0

我再次用分區替換了模數!謝謝。 (雖然它會工作,只是在一個非常有趣的順序;)) –

+0

爲什麼不只是使用$ list [] = $ string?你根本不需要指定一個數字數組索引。另外我不明白你正在使用的字符串連接 – carpii

相關問題