2012-05-01 229 views
1

我正在創建一個迷你購物車,並且想知道是否有方法從會話中獲取數據並將其寫入數據庫。 用戶選擇的部分應該被添加到他們的購物車。一旦完成,我將如何獲取存儲到會話中的數據,並將其寫入數據庫,以便在他們再次登錄時他們的購物車仍在那裏?將會話數據寫入數據庫

<?php 
if (isset($_GET['add'])) { 
$quantity = mysql_query('SELECT partID, quantity, catergory FROM computerparts WHERE partID=' . mysql_real_escape_string((int) $_GET['add'])); 
while ($quantity_row = mysql_fetch_array($quantity)) { 
    if ($quantity_row['quantity'] != $_SESSION['index_' . $_GET['add']]) { 
     $_SESSION['index_' . $_GET['add']]+='1'; 
    } 
} 
header('Location: ' . $page); 
} 

if (isset($_GET['delete'])) { 
$_SESSION['index_' . (int) $_GET['delete']] = '0'; 
header('Location: ' . $page); 
} 

function cart() { 
$total = ""; 
$sub = ""; 
foreach ($_SESSION as $name => $value) { 
    if ($value > 0) { 
     if (substr($name, 0, 6) == 'index_') { 
      $id = substr($name, 6, (strlen($name) - 6)); 
      $get = mysql_query('SELECT partID, partName, price FROM computerparts WHERE partID=' . (int) $id); 
      while ($get_row = mysql_fetch_array($get)) { 
       $sub = $get_row['price'] * $value; 
       echo $get_row['partName'] . 'x' . $value . '@ &pound;' . $get_row['price'] . '=' . $sub . '<a href="index.php?delete=' . $id . '">Delete</a> <br />'; 
      } 
     } 
     $total += $sub; 
    } 
} 
if ($total == 0) { 
    echo 'Your cart is empty'; 
} else { 
    echo 'Total: &pound' . $total; 
} 
} 
?> 

爲了讓事情變得更容易,我從本網站中刪除了功能。將不會購買任何物品,所有發生的都是用戶選擇他想要的物品,只要他希望將其引用到規格中,就可以隨時存取該信息。 (規格表),他選擇的項目將被寫入該表格。與當前登錄的用戶ID。

+0

是什麼,你已經嘗試 – Satya

+0

你錯過了代碼:) – Satya

+0

你如何確定邏輯'當用戶done'?點擊註銷?點擊完成按鈕?或只是離開頁面? – ariefbayu

回答

0

Fadamie

您正在考慮會話數據存儲在數據庫中,因爲如果用戶在它的車後,他沒有註銷,從你的車採購項目添加項目。

那麼接下來他來那麼我們就必須顯示該項目,以他喜歡的時間

(您已加入購物車,但沒有該項目購買...)

我覺得這是你的邏輯......對於我有一個答案..

您可以在purchase_item_by_user表中特定的採購項目存儲與「旗型‘待定’。

所以每次你在列表中,檢查時間是否會有在是項待處理清單...(您也可以查詢具體的日期或時間..)

之後,當用戶購買該項目你可以把它的標誌改爲「Puchased」,或者如果用戶取消該項目,那麼你可以設置標誌「已取消」 ..

這將幫助你...... 謝謝, Tarun Malpani ...

+0

感謝您的建議.. 但它其實比這更基本。將不會購買任何物品,所有發生的都是用戶選擇他想要的物品,只要他希望將其引用到規格中,就可以隨時存取該信息。 (規格表),他選擇的項目將被寫入該表格。與當前登錄的用戶ID。 – Fadamie

0

如果我正確理解你的問題,你已經將你想要的值存儲在會話數組中。

在由於數據的情況下被存儲在會話,如果會話仍處於活動狀態,您可以通過訪問該值:$_SESSION['cartItem']

然後來存儲這些值在數據庫中檢查此鏈接:

PHP and Writing to MySQL Databases。這是假設它是一個MySQL數據庫,我不知道你打算連接到什麼樣的數據庫或者什麼樣的數據庫,請澄清一下,如果它是不同的。


現在表格本身,您將希望保存所選項目,並利用值來確定它是否已被購買。您可以在用戶離開時提示用戶,如果他們想要爲以後的日期保存購買。如果是這樣,您可以通過ajax將值(在這種情況下是'yes')傳遞給一個php函數,然後該函數會發起會話值到一個數據庫,列中指定了購買是否正在等待或完成。

看看這些鏈接,獲得進一步的澄清如何達致這:AJAX and PHP


這也可以通過檢查當前用戶的「車」是滿的,如果實現,當他們離開時,您可以自動將數據保存到引用userID的數據庫中。所以當用戶重新登錄購物車時會保存並可以再次訪問。

檢查onbeforeunload javascript事件。你可以利用這個來判斷他們是否關閉/詢問他們是否想關閉,如果是,他們是否願意保存他們的購物車?或者只是將這些數據保存到數據庫中,以便稍後登錄,這也可以在他們進行註銷時被解僱。

檢查該鏈接,演示和其他信息:onbeforeunload event


有很多很多方法可以做到這一點,我不會感到舒適的書寫出來說程序的單一方法。但是,這些信息是可用的,只要記得準備好您的對賬單和/或利用PDO並儘可能以安全的方式傳輸信息。

鏈接以供參考:Prepared StatementsPDO

*嘶嘶聲憤怒地在PHP