当数据不同但标识符相同( ID )时,我总是要复制会话。
产品数据库的结构:
id product price
1 shirt 30
2 pants 34
产品的颜色数据库的结构:
id product_id color
1 1 blue
2 1 yellow
3 2 White
4 2 black
产品尺寸的数据库结构
id product_id size
1 1 XS
2 1 S
3 2 M
4 2 XL
数据(color
和size
)按方法POST
发送
$_SESSION['colors'][$itemId]=$_POST['colors'];
$_SESSION['size'][$itemId]=$_POST['size'];
按方法id
生成GET
。
$itemId = isset($_GET['itemId']) ? $_GET['itemId'] : "";
我需要复制产品的会话以选择不同的颜色或大小。
示例
-----------------------------------
Product Quantity Price
-----------------------------------
Shirt blue S 1 30
Shirt blue XS 1 30
Shirt yellow S 1 30
如果我们添加具有相同值的相同产品(衬衫蓝S),请仅更新数量。
-----------------------------------
Product Quantity Price
-----------------------------------
Shirt blue S 2 60
没有成就获得产品的重复,更新相同的值 地选择。
代码 updatecart.php
<?php
session_start();
$itemId = isset($_GET['itemId']) ? $_GET['itemId'] : "";
//SESSION colors
$_SESSION['colors'][$itemId]=$_POST['colors'];
//SESSION size
$_SESSION['size'][$itemId]=$_POST['size'];
if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_POST['qtyupdate'])) {
for ($i = 0; $i < count($_POST['qtyupdate']); $i++) {
$key = $_POST['arr_key_' . $i];
$_SESSION['qty'][$key] = $_POST['qtyupdate'][$i];
}
} else {
$qty = isset($_POST['qty']) ? $_POST['qty'] : 1;
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = array();
$_SESSION['qty'][] = array();
}
if (in_array($itemId, $_SESSION['cart'])) {
$key = array_search($itemId, $_SESSION['cart']);
$_SESSION['qty'][$key] = $_SESSION['qty'][$key] + $qty;
} else {
array_push($_SESSION['cart'], $itemId);
$key = array_search($itemId, $_SESSION['cart']);
$_SESSION['qty'][$key] = $qty;
}
}
header('location:cart.php');
?>
代码 cart.php
<?php
session_start();
$itemCount = isset($_SESSION['cart']) ? count($_SESSION['cart']) : 0;
if (isset($_SESSION['qty'])){
$meQty = 0;
foreach ($_SESSION['qty'] as $meItem){
$meQty = $meQty + $meItem;
}
}else{
$meQty = 0;
}
if (isset($_SESSION['cart']) and $itemCount > 0){
$itemIds = "";
foreach ($_SESSION['cart'] as $itemId){
$itemIds = $itemIds . $itemId . ",";
}
$inputItems = rtrim($itemIds, ",");
$meSql = "SELECT * FROM products WHERE id in ({$inputItems})";
$meQuery = mysqli_query($kcon, $meSql);
$meCount = mysqli_num_rows($meQuery);
}else{
$meCount = 0;
}
if ($meCount == 0){
echo "<div>No items in the basket</div>";
}else{
?>
<form action="updatecart.php" method="post" name="fromupdate">
<table class="table">
<tr>
<td>Product</td>
<td>Price</td>
<td>Quantity</td>
</tr>
<?php
$total_price = 0;
$num = 0;
while ($meResult = mysqli_fetch_assoc($meQuery)){
$key = array_search($meResult['id'], $_SESSION['cart']);
$total_price = $total_price + ($meResult['price'] * $_SESSION['qty'][$key]);
$intemId=$meResult['id'];
$color = $_SESSION['colors'][$intemId];
$size = $_SESSION['size'][$intemId];
}
?>
<tr>
<td class="cart-image">
<h3><?php echo $meResult['product']; ?> <?php echo $color; ?> <?php echo $size?></h3>
</td>
<td class="cart-price"><?php echo $meResult['price']; ?></td>
<?php
$num++;
}
?>
</tr>
</table>
请帮助我,复制产品的会话以选择不同的颜色或尺寸。
谢谢。
答案 0 :(得分:0)
你应该像这样使用多维数组,它不会覆盖你的值。
$ _ SESSION [ '颜色'] [] [$的itemId] = $ _ POST [ '颜色'];
$ _ SESSION [ '尺寸'] [] [$的itemId] = $ _ POST [ '尺寸'];
答案 1 :(得分:0)
我认为在你的情况下使用数据库而不是会话。 创建一个表并插入用户的不同选择并处理该表进行计算。会话的使用会很头疼。