Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在购物车中添加我的订单时重复项目_Php_E Commerce_Shop - Fatal编程技术网

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值。但是,当您再次添加相同的产品时,如果您不删除第一个,则将面临此问题

因此,在添加产品之前,您应该检查产品是否已在会话中。 或者你应该更新它