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。

4

2 回答 2

0

法达米

您正在考虑将会话数据存储在数据库中,因为如果用户在它的购物车中添加商品,然后他在没有从您的购物车中购买商品的情况下注销。

然后下次他来时,我们必须向他展示该物品(您已将该物品添加到购物车但未购买......)

我认为这是你的逻辑......为此我有一个答案..

您可以使用“标志类型”待定“将该特定购买项目存储在您的 purchase_item_by_user 表中。

所以每次你必须检查列表中是否有待处理列表中的项目......(你也可以检查特定的日期或时间......)

之后,当用户购买该项目时,您可以将其标志更改为“已购买”,或者如果用户取消该项目,则您可以设置标志“已取消”..

这会帮助你...谢谢,Tarun Malpani...

于 2012-05-01T06:30:57.300 回答
0

如果我正确理解您的问题,那么您已经在会话数组中存储了您想要的值。

在这种情况下,由于数据存储在会话中,如果会话仍然处于活动状态,您可以通过以下方式访问值:$_SESSION['cartItem']

然后要将这些值存储在数据库中,请检查此链接:

PHP 和写入 MySQL 数据库。这是假设它是一个 mysql 数据库,我不确定您打算如何连接或连接哪种类型的数据库,如果它有所不同,请澄清这一点。


现在表格本身,您将要保存选定的项目,并使用一个值来确定它是否已被购买。您可以在用户离开时提示他们是否想保存购买以供日后使用。如果是这样,您可以通过 ajax 将值(在这种情况下为“是”)传递给 php 函数,然后该函数将启动将会话值发送到数据库,其中有一列指定购买是挂起还是完成。

看看这些链接,以进一步说明如何实现这一点:AJAX 和 PHP


这也可以通过检查当前用户的“购物车”是否已满来实现,如果是,当他们离开时,您可以自动将数据保存到引用用户 ID 的数据库中。因此,当该用户重新登录购物车时,将保存并可以再次访问。

检查onbeforeunloadjavascript事件。您可以利用它来查看他们是否正在关闭/询问他们是否要关闭,如果是,他们是否会“保存他们的购物车?”,或者只是将该数据保存到数据库中以便他们稍后登录,这也可以当他们继续注销时触发一个函数。

检查此链接以获取演示和更多信息:onbeforeunload 事件


有很多方法可以做到这一点,我不愿意为所述过程写出单一的方法。然而,这些信息是可用的,只要记住准备你的陈述和/或使用 PDO 并尽可能以安全的方式转移东西。

参考链接:Prepared Statements , PDO

*对 PHP 发出愤怒的嘶嘶声

于 2012-05-01T06:57:27.433 回答