将会话数据写入数据库

时间:2012-05-01 05:59:37

标签: php mysql session

我正在创建一个迷你购物车,我想知道是否有办法从会话中获取数据并将其写入数据库。 用户选择的部件应该被添加到他们的购物车中。一旦完成,我将如何获取存储在会话中的数据,并将其写入数据库,以便当他们再次登录时他们的购物车仍在那里?

<?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。

2 个答案:

答案 0 :(得分:0)

Fadamie

您正在考虑将会话数据存储在数据库中,因为如果用户在其购物车中添加商品,那么他就会退出而不从您的购物车中购买商品。

然后他下次来的时候我们必须向他展示那个项目(你已经在购物车中添加了这个项目但没有购买......)

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

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

因此,每次您必须在列表中检查是否有待处理列表中的项目...(您还可以检查特定日期或时间..)

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

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

答案 1 :(得分:0)

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

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

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

PHP and Writing to MySQL Databases。这是假设它是一个mysql数据库,我不知道你计划连接的数据库是什么类型或者是什么类型的数据库,如果它有所不同,请澄清一下。


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

请看一下这些链接,以便进一步澄清如何实现这一目标:AJAX and PHP


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

检查onbeforeunload javascript事件。你可以利用它来看看他们是否正在关闭/询问他们是否愿意关闭,如果是这样他们想要保存他们的购物车?',或者只是将这些数据保存到他们以后登录的数据库中,这也可以是一个在他们进行注销时被触发的函数。

查看此链接以获取演示和更多信息:onbeforeunload event


有很多方法可以做到这一点,我觉得为所述程序编写单一方法感觉不舒服。但是,这些信息是可用的,只要记住准备你的陈述和/或利用PDO并尽可能安全地传输东西。

参考链接:Prepared StatementsPDO

*愤怒地嘲笑PHP