2013-11-01 86 views
0

我正在嘗試使用php和html實現購物車。我遇到的問題是使用會話存儲要存儲的產品的ID。下面是我此刻的代碼:使用php和html將商品添加到購物車中

<?php 
session_start(); 
?> 
//There are three HTML Forms that take and display input, and output. 

<?php 
$_SESSION['cart'] = array(); 

if(isset($_GET['search'])){ 
    echo "<table border=1>"; 
    echo "<th>Product Image</th>"; 
    echo "<th>Product Name</th>"; 
    echo "<th>Price</th>"; 

    foreach($xml->categories->category->items->product as $product){ 
    $imageURL = $product->images->image[0]->sourceURL; 
    $id = $product['id']; 
    echo "<tr>"; 
    echo "<td><a href= 'buy.php?buy=".$id."'><img src=".$imageURL."></img></a></td>"; 
    echo "<td>".$product->name."</td>"; 
    echo "<td>".'$'.$product->minPrice."</td>"; 
    } 
} 

if(isset($_GET['buy'])){ 
    $product_id = $_GET['buy']; 
    if(isset($_SESSION['cart'])){ 
    array_push($_SESSION['cart'],$product_id); 
    } 
} 

print_r ($_SESSION); 
?> 

if語句做的第一件是什麼,它得到的搜索詞,並獲得最接近的結果。然後顯示圖像,名稱和價格。當你點擊圖片時,有一個href,它應該被添加到購物車。這是第二條if語句發揮作用的地方。如果圖像已被點擊,我想獲得該id並將其存儲在會話中。它在點擊時存儲產品的ID,但是當我返回添加另一個項目時,以前的ID將被替換爲新ID。有人可以向我解釋我出錯的地方嗎?任何幫助將不勝感激。

+0

在分配給空數組之前檢查會話手推車。在下面檢查我的代碼。它是適合你的解決方案嗎? – kidz

回答

2

您的問題是在這條線: $ _SESSION [ '購物車'] =陣列();

檢查這樣的:

if(empty($_SESSION['cart'])) 
    $_SESSION['cart'] = array(); 

這應該解決它

+0

非常感謝你,正如你所說我的問題解決了。 – user2659117

1

首先,您必須將數組分配給您的$ _SESSION ['cart']。否則,它將只存儲一個值。

$ids = array(); 

$_SESSION['cart'] = $ids; 

然後它會工作。

+0

我試過這樣做,但第一個值仍然被替換後的值。 – user2659117

+0

你能用最新的代碼更新問題嗎? – Dilantha

+0

我已經更新了代碼。 – user2659117

1

必須使用數組來存儲多個值:

$shop_array= array(); // this is create the array with the name shop_array 
// now create the session and assign the shop_array to creating session 
$_session['mycart'] = $shop_array; 

您可以檢查使用print_r()功能的存儲值:

print_r($_session['mycart']); 

你會得到結果集存儲的ID的。

+0

謝謝您的建議,但我已經意識到這一點。這就是我知道數組元素被替換的原因。這與其他人的建議是一樣的,似乎並沒有爲我工作。 – user2659117

0

能否請您試試這個,

  if(isset($_GET['buy'])){ 
       $product_id = $_GET['buy'];  
        if(!in_array($product_id, $_SESSION['cart'])){ 
         $_SESSION['cart'][]=$product_id; 
        }    
      } 
+0

感謝您的迴應,但是,它仍舊用新值代替舊值,而不是累積它們。 – user2659117

相關問題