2014-10-29 82 views
0

在發佈之前通過論壇查看。PHP:來自陣列的追蹤數量和總價格

我有一個獨特的PHP設置,我想跟蹤購物車中物品的數量和總價。唯一的問題是我不能得到它的工作。

這是我第一次在PHP中從頭做起。

以下是我的設置如何工作。

首先,我使用全局變量來解析和調用數據庫中的某些項目。

在某些表單提交中,某些項目會返回。

對於這個問題,特別是我通過一個鏈接引用另一個處理請求的文件來傳遞一個值,item ID。

該文件創建一個會話數組,該數組將該ITEM ID引用到MYSQL數據庫。它被稱爲$ _SESSION ['cart']。

這是我寫的代碼;

// PASS ITEM ID TO ADD CART PAGE. WHERE pID = Product ID. 
 

 
<?php 
 

 
\t // Pull information from DB to translate into HTML 
 
\t \t \t \t \t 
 
\t $results->data_seek(0); 
 

 
\t while($row = $results->fetch_assoc()){ 
 

 
\t \t $pId = $row['ProductID']; 
 
    } 
 

 
?> 
 

 
<a href="addc.php?id=<?php echo $pId ?>"> Add to cart </a> 
 

 

 
// ADD ITEMS TO CART 
 

 

 
// Session 
 
session_start(); 
 

 

 
// If empty cart set empty 
 

 
if(empty($_SESSION['cart'])) { 
 
\t $_SESSION['cart'] = array(); 
 
} 
 

 

 
// Store ID 
 

 
$thisID = $_GET['id']; 
 

 

 
// Push ID into Array 
 

 
array_push($_SESSION['cart'],$thisID); // ADDS TO ARRAY 
 

 
header('Location:cart.php'); // REDIRECTS TO CART 
 

 

 
// NOW ON CART PAGE 
 

 
// Convert Cart Session to Strings & Store 
 

 
if(empty($_SESSION['cart'])) { 
 
\t $_SESSION['cart'] = array(); 
 
\t $itemId = 0; 
 
} else { 
 
\t $itemId = implode(",",$_SESSION['cart']); 
 
} 
 

 

 
// Reference Above Strings to DB 
 

 
$results = run_my_query("SELECT * FROM Products WHERE ProductID IN ($itemId)");

現在有了這個

  • 問題允許多個條目,但該產品只顯示一次(這樣我要跟蹤量)
  • 沒有確切方法總計基於拉項目的產品

在這一點之後,我試着讓數組成爲一個關聯數組並將兩個數組合並在一起,但我認爲有一種更簡單的方法來做到這一點,只是不知道如何。

在此先感謝。

+0

你有每個項目的當時的車,你推項目的ID陣列中的數量? – Keeleon 2014-10-29 19:16:51

+0

不在此工作版本中。我發佈後,我試圖讓這個數組像這樣行事; 「ID」=> $ itemID,「QT」=> $ itemQT。但那並不奏效。 – Kris 2014-10-29 19:23:17

回答

3

您應該使用產品ID作爲購物車陣列中的關鍵字,例如

$_SESSION['cart'][$thisID] = $quantity; 

所以可以非常容易查找特定項目在車這種方式,而無需環路陣列上或使用in_array()


按照評論的請求,這裏是你如何處理一些基本的購物車的操作:

添加到購物車,或者更新量在購物車:

$_SESSION['cart'][$productID] = $_POST['item_quantity']; 

從購物車中刪除:

unset($_SESSION['cart'][$productID]); 

獲取購物車中產品的ID:

$product_IDs_array = array_keys($_SESSION['cart']); 

查看是否有產品在購物車中,又有多少是:

$amount = isset($_SESSION['cart'][$productID]) ? false : $_SESSION['cart'][$productID]; 
+0

你能否詳細說明一下?我理解這個概念,但不瞭解應用。 – Kris 2014-10-29 19:32:14