Php 在购物车中添加我的订单时重复项目
我的餐厅网站的购物车功能有问题 例如,如果我将一个项目添加到购物车中,然后添加另一个项目,然后如果我删除上次添加的项目并再次添加,则它会在会话中添加自己。在这里,我可以添加和删除购物车中的项目:Php 在购物车中添加我的订单时重复项目,php,e-commerce,shop,Php,E Commerce,Shop,我的餐厅网站的购物车功能有问题 例如,如果我将一个项目添加到购物车中,然后添加另一个项目,然后如果我删除上次添加的项目并再次添加,则它会在会话中添加自己。在这里,我可以添加和删除购物车中的项目: function AddProd($id_prod, $quant) { if(isset($_SESSION['cart'])){ $_SESSION['cart'].=$id_prod.'>'.$quant.",";
function AddProd($id_prod, $quant) {
if(isset($_SESSION['cart'])){
$_SESSION['cart'].=$id_prod.'>'.$quant.",";
} else {
$_SESSION['cart']=$id_prod.'>'.$quant.",";
}
}
function RemoveFromCart($id_prod) {
if(isset($_SESSION['cart'])) {
$n = $_SESSION['cart'];
$prod_id = substr($n, 0, -1);
$ids = explode(',', $prod_id);
$prods = '';
foreach ($ids as $id) {
$i = explode('>', $id);
if($i[0] != $id_prod) $prods = $prods.''.$id.',';
}
$_SESSION['cart'] = $prods;
}
}
这里我有一个设置项目数量的函数:
function SetCartNumber($conn) {
if(isset($_SESSION['cart'])) {
$n = $_SESSION['cart'];
$prod_id = substr($n, 0, -1);
$ids = array_map('trim', explode(',', $prod_id));
foreach ($ids as $id) {
$i = explode('>', $id);
$total = $total + $i[1];
}
return $total;
}
return 0;
}
在此,它将插入数据库:
function LastId($conn, $tbl){
$s = 'SELECT `id` FROM `'.$tbl.'` ORDER BY `id` DESC LIMIT 1';
if ($r = mysqli_query($conn, $s)) {
$rowd = mysqli_fetch_array($r, MYSQLI_NUM);
return $rowd[0];
}
return -1;
}
$t_price = (empty(GetPromotion($connect))) ? $total_price : '<span style="color: white; font-weight: bold;">'.SetPromotion($connect).'</span> <span style="text-decoration: line-through; color: red;">'.$total_price.'</span>';
if(isset($_POST['delete_prod'])) {
RemoveFromCart($_POST['delete_prod']);
echo '<script type="text/JavaScript"> setTimeout("location.href = \'cart\';",100); </script>';
}
if(isset($_POST['decrease_prod'])) {
ProdsDecrease($_POST['decrease_prod']);
echo '<script type="text/JavaScript"> setTimeout("location.href = \'cart\';",100); </script>';
}
if(isset($_POST['increase_prod'])) {
ProdsIncrease($_POST['increase_prod']);
echo '<script type="text/JavaScript"> setTimeout("location.href = \'cart\';",100); </script>';
}
if (!empty($_POST['trimite']))
{
$str_name = ($str_name[strlen($str_name)-2] == ',') ? substr($str_name, 0, -2) : $str_name;
$str_name2 = ($str_name2[strlen($str_name2)-2] == ',') ? substr($str_name2, 0, -2) : $str_name2;
$price = (empty(SetPromotion($connect))) ? SetCartPrice($connect) : SetPromotion($connect);
$price = (!empty(GetPromotion($connect))) ? $price.' lei(Promotie activa: '.GetPromotion($connect).'%)' : $price;
$prods = MailProds($connect);
$quantity = SetCartNumber($connect);
$price1 = (empty(SetPromotion($connect))) ? SetCartPrice($connect) : SetPromotion($connect);
$price1 = floatval($price1);
$quantity = floatval($quantity);
$email = filter_input(INPUT_POST, 'email');
$telefon = filter_input(INPUT_POST, 'telefon');
$mentiuni = filter_input(INPUT_POST, 'mentiuni');
$tacamuri = filter_input(INPUT_POST, 'tacamuri');
if(!empty(get())) { $email = getEmail($connect); }
$sql = "INSERT INTO `comenzi`(`name`, `pret`, `cantitate`, `adresa_mail`, `nr_telefon`, `mentiuni`, `tacamuri`) VALUES ('$prods', '$price1', '$quantity', '$email', '$telefon', '$mentiuni', '$tacamuri')";
函数LastId($conn,$tbl){
$s='从''.$tbl'中选择''id'.'''.'按''id`DESC LIMIT 1'排序';
if($r=mysqli_查询($conn,$s)){
$rowd=mysqli\u fetch\u数组($r,mysqli\u NUM);
返回$rowd[0];
}
返回-1;
}
$t_price=(空(GetPromotion($connect)))$总价:'.SetPromotion($connect)。'.$total_price'.';
如果(isset($\u POST['delete\u prod'])){
移除购物车($_POST['delete_prod']);
echo'setTimeout(“location.href=\'cart\';”,100);
}
如果(isset($_POST['reduce_prod'])){
产品减少($_POST['decrease_prod']);
echo'setTimeout(“location.href=\'cart\';”,100);
}
如果(isset($_POST['increase_prod'])){
产量增加($_POST['rease_prod']);
echo'setTimeout(“location.href=\'cart\';”,100);
}
如果(!空($_POST['trimite']))
{
$str_name=($str_name[strlen($str_name)-2]=',')?substr($str_name,0,-2):$str_name;
$str_name2=($str_name2[strlen($stru name2)-2]=',')?substr($str_name2,0,-2):$str_name2;
$price=(空(SetPromotion($connect))?SetCartPrice($connect):SetPromotion($connect);
$price=(!empty(GetPromotion($connect))?$price。'lei(Promotie activa:'。GetPromotion($connect)。'):$price;
$prods=MailProds($connect);
$quantity=SetCartNumber($connect);
$price1=(空(SetPromotion($connect))?SetCartPrice($connect):SetPromotion($connect);
$price1=floatval($price1);
$quantity=floatval($quantity);
$email=filter_input(输入_POST,'email');
$telefon=过滤输入(输入后,“telefon”);
$mentiuni=过滤器输入(输入后“mentiuni”);
$tacamuri=过滤器输入(输入后“tacamuri”);
如果(!empty(get()){$email=getEmail($connect);}
$sql=“插入'comenzi'('name'、'pret'、'cantitate'、'adresa_mail'、'nr_telefon'、'mentiuni'、'tacamuri`)值('$prods'、'$price1'、'$quantity'、'$email'、'$telefon'、'$mentiuni'、'$tacamuri');
如何解决此问题?问题出在addProd function函数中。您的会话必须包含唯一的prodId值。但是,当您再次添加相同的产品时,如果您不删除第一个,则将面临此问题 因此,在添加产品之前,您应该检查产品是否已在会话中。 或者你应该更新它