gpt4 book ai didi

php - 将购物车 session 保存到数据库

转载 作者:行者123 更新时间:2023-11-30 22:32:25 24 4
gpt4 key购买 nike

我有一个订购页面,我让用户在其中订购并添加到购物车。然后在购物车页面我显示订单,用户可以更改他们的订单。我想要做的是将此购物车信息保存到数据库中,以便我可以执行结帐,同时将购物车内容插入数据库。我在网上看过但没有找到任何解决方案。下面是我的代码 -索引.php

    <?php 
session_start();
require("connection.php");
if(isset($_GET['page'])){

$pages=array("products", "cart");

if(in_array($_GET['page'], $pages)) {

$_page=$_GET['page'];

}else{

$_page="products";

}

}else{

$_page="products";

}


?>


<html xmlns="http://www.w3.org/1999/xhtml">
<head>



<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- <link rel="stylesheet" href="css/reset.css" /> -->
<link rel="stylesheet" href="styles.css" />


<title>HackLunch</title>


</head>

<body>

<h1> Welcome to our site </h1>

<div id="container">

<div id="main">

<?php require($_page.".php"); ?>

</div><!--end of main-->

<div id="sidebar">
<h1>Cart</h1>
<?php

if(isset($_SESSION['cart'])){

$sql="SELECT * FROM products WHERE id_product IN (";

foreach($_SESSION['cart'] as $id => $value) {
$sql.=$id.",";
}

$sql=substr($sql, 0, -1).") ORDER BY name ASC";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){

?>
<p><?php echo $row['name'] ?> x <?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?></p>
<?php

}
?>
<hr />
<a href="index.php?page=cart">Go to cart</a>
<?php

}else{

echo "<p>Your Cart is empty. Please add some products.</p>";

}

?>

</div><!--end of sidebar-->

</div><!--end container-->

</body>
</html>

购物车.php

    <?php 

if(isset($_POST['submit'])){

foreach($_POST['quantity'] as $key => $val) {
if($val==0) {
unset($_SESSION['cart'][$key]);
}else{
$_SESSION['cart'][$key]['quantity']=$val;
}
}

}

?>

<h1>View cart</h1>
<a href="index.php?page=products">Go back to the products page.</a>
<form method="post" action="index.php?page=cart">

<table>

<tr>
<th>Name</th>
<th>Quantity</th>
<th>Price</th>
<th>Items Price</th>
</tr>

<?php

$sql="SELECT * FROM products WHERE id_product IN (";

foreach($_SESSION['cart'] as $id => $value) {
$sql.=$id.",";
}

$sql=substr($sql, 0, -1).") ORDER BY name ASC";
$query=mysql_query($sql);
$totalprice=0;
while($row=mysql_fetch_array($query)){
$subtotal=$_SESSION['cart'][$row['id_product']]['quantity']*$row['price'];
$totalprice+=$subtotal;
?>
<tr>
<td><?php echo $row['name'] ?></td>
<td><input type="text" name="quantity[<?php echo $row['id_product'] ?>]" size="5" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?>" /></td>
<td><?php echo $row['price'] ?>$</td>
<td><?php echo $_SESSION['cart'][$row['id_product']]['quantity']*$row['price'] ?>$</td>
</tr>
<?php

}
?>
<tr>
<td colspan="4">Total Price: <?php echo $totalprice ?></td>
</tr>

</table>
<br />
<button type="submit" name="submit">Update Cart</button>
<a href="checkout.php">Checkout</a>
</form>
<br />
<p>To remove an item set its quantity to 0. </p>

产品.php

    <?php 

if(isset($_GET['action']) && $_GET['action']=="add"){

$id=intval($_GET['id']);

if(isset($_SESSION['cart'][$id])){

$_SESSION['cart'][$id]['quantity']++;

}else{

$sql_s="SELECT * FROM products
WHERE id_product={$id}";
$query_s=mysql_query($sql_s);
if(mysql_num_rows($query_s)!=0){
$row_s=mysql_fetch_array($query_s);

$_SESSION['cart'][$row_s['id_product']]=array(
"quantity" => 1,
"price" => $row_s['price']
);


}else{

$message="This product id it's invalid!";

}

}

}

?>
<h1>Product List</h1>
<?php
if(isset($message)){
echo "<h2>$message</h2>";
}
?>
<table>
<tr>
<th>Name</th>
<th>Price</th>
<th>Action</th>
</tr>

<?php

$sql="SELECT * FROM products ORDER BY name ASC";
$query=mysql_query($sql);

while ($row=mysql_fetch_array($query)) {

?>
<tr>
<td><?php echo $row['name'] ?></td>
<td><?php echo $row['price'] ?>$</td>
<td><a href="index.php?page=products&action=add&id=<?php echo $row['id_product'] ?>">Add to cart</a></td>
</tr>
<?php

}

?>

</table>

我试过像这样实现我的 checkout.php,但它不起作用。

    <?php
include("connection.php");
$serialized_cart = serialize($_SESSION["cart"]);
$sql = "INSERT INTO cart (contents) VALUES ('" . mysql_real_escape_string($serialized_cart) . "')";
mysql_query($sql)
or die("Query to store cart failed");
?>

最佳答案

如果您插入 ROWS 而不是 SERIALIZED DATA,您可能会更好。 (这有点丑,你知道的..)

像你已经做的那样遍历你的行:

$sql="SELECT * FROM products WHERE id_product IN ("; 
foreach($_SESSION['cart'] as $id => $value) {
$sql.=$id.",";
//execute an insert here..
}

并花一些时间学习 php PDO。您可能不会后悔,也不会受到那么多的抨击。

关于php - 将购物车 session 保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33519785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com