2015-04-15 80 views
0

我試圖從查詢字符串中獲取值並將它們添加到數組中。輸出查詢字符串是一樣的東西:

add_to_cart.php?product_id=4&product_name=Pizza&quantity=1&additional_id[]=1&additional_quantity[]=3&additional_id[]=4&additional_quantity[]=5

我越來越各additional_idadditional_quantity變量呈現在查詢字符串與下面的代碼。我將每個additional_id與我在數據庫表加法中的ID進行比較,並將所有數據插入到數組中。在我的文件add_to_cart.php存在文件下面的代碼:多維數組中存在的數據無法正確顯示

if(isset($_SESSION['cart'])) 
{ 
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
    { 
     extract($row); 
     $columns = array 
     (
      'product_id_session' => $product_id_session, 
      'product_id' => $product_id, 
      'product_name' => $product_name, 
      'product_price' => $product_price, 
      'quantity' => $quantity, 
      'additionals' => array()       
     ); 
     if(isset($_GET['additional_id']) && $_GET['additional_id'] != "") 
     { 
      foreach($_GET['additional_id'] as $additional => $value) 
      { 
       $additional_id = $value; 
       if(isset($_GET['additional_quantity'][$additional])) 
       { 
        $additional_quantity = $_GET['additional_quantity'][$additional]; 
        if($additional_quantity <= 0 || $additional_quantity > 5) 
        { 
         $additional_quantity = null; 
        } 
        else 
        { 
         $sql2 = "SELECT additional_id, additional_name, additional_price FROM additionals WHERE additional_id LIKE '{$additional_id}'"; 
         $stmt2 = $connection->prepare($sql2); 
         $stmt2->execute(); 
         while ($row = $stmt2->fetch(PDO::FETCH_ASSOC)) 
         { 
          extract($row); 
          $columns['additionals'][]['additional_id'] = $additional_id; 
          $columns['additionals'][]['additional_name'] = $additional_name; 
          $columns['additionals'][]['additional_price'] = $additional_price; 
          $columns['additionals'][]['additional_quantity'] = $additional_quantity; 
         } 
        } 
       } 
      } 
     } 
     $_SESSION['cart'][$product_id_session] = $columns; 
    } 
    header('Location: products.php?action=added&product_name=' . $product_name); 
} 

一旦一切都在cart SESSION增加,在cart.php頁我想展示的產品與他們的選擇additionals並與數量:

foreach($_SESSION['cart'] as $product) 
{ 
    echo "<tr>"; 
     echo "<td>{$product['product_name']}</td>"; 
     echo "<td>&#36;{$product['product_price']}</td>"; 
     echo "<td>{$product['quantity']}</td>"; 
     echo "<td>"; 
     foreach($product['additionals'] as $additional) 
     { 
      echo "<p>{$additional['additional_quantity']}x{$additional['additional_name']} - {$additional['additional_price']}</p>"; 
     } 
     echo "</td>"; 
    echo "</tr>"; 
} 

但我做錯了什麼,我認爲這兩個代碼無法正常工作。
我的輸出不好意思,這樣的事情:
enter image description here

上午我通過正確的方式做這件事?也許我沒有循環與foreach正確,或者加法沒有被添加成功?對不起,我從未使用過多維數組。有沒有辦法做我想要的?謝謝!

+1

試着改變你的一切'$列[ 'additionals'] [] ...''到$ columns ['additionals'] [$ additional] ...' – Sean

+0

@Sean謝謝你,非常感謝!這個竅門!我想從上週五開始做這個!一個偉大的擁抱! – Dyan

回答

1

解決方案按照意見-
您的問題是由$columns['additionals'][],因爲它導致每個值被添加爲自己的數組。這是通過解決添加$additional爲數組鍵 -

while ($row = $stmt2->fetch(PDO::FETCH_ASSOC)) 
{ 
    extract($row); 
    $columns['additionals'][$additional]['additional_id'] = $additional_id; 
    $columns['additionals'][$additional]['additional_name'] = $additional_name; 
    $columns['additionals'][$additional]['additional_price'] = $additional_price; 
    $columns['additionals'][$additional]['additional_quantity'] = $additional_quantity; 
} 

,或者您也可以做 -

while ($row = $stmt2->fetch(PDO::FETCH_ASSOC)) 
{ 
    extract($row); 
    $columns['additionals'][] = array('additional_id' => $additional_id, 
             'additional_name' => $additional_name, 
             'additional_price' => $additional_price, 
             'additional_quantity' => $additional_quantity); 
} 
+0

不錯,但我需要使用第一個解決方案,因爲用戶可能選擇不添加附加。謝謝! – Dyan