Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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和Javascript在30分钟后启动购物车_Javascript_Php_Ajax - Fatal编程技术网

从用户';使用PHP和Javascript在30分钟后启动购物车

从用户';使用PHP和Javascript在30分钟后启动购物车,javascript,php,ajax,Javascript,Php,Ajax,我有一个典型的带有购物车的电子商务站点,我想在30分钟后(或其他定义的时间段)自动从用户的购物车中删除一个项目。我真的不确定实现这一目标的最佳方式。我知道有php sleep()函数,但从性能角度看,等待30分钟或更长时间似乎是不可取的方法。我尝试使用setTimeout()在javascript中设置超时,并让它调用一个函数,该函数将向removefromcart.php发送一个Ajax调用以及项目id。但是,我根本无法启动该函数。以下是用于将项目添加到购物车的代码: session_st

我有一个典型的带有购物车的电子商务站点,我想在30分钟后(或其他定义的时间段)自动从用户的购物车中删除一个项目。我真的不确定实现这一目标的最佳方式。我知道有php sleep()函数,但从性能角度看,等待30分钟或更长时间似乎是不可取的方法。我尝试使用setTimeout()在javascript中设置超时,并让它调用一个函数,该函数将向removefromcart.php发送一个Ajax调用以及项目id。但是,我根本无法启动该函数。以下是用于将项目添加到购物车的代码:

  session_start();
  require_once('../config.php');

try{ 
    $itemId = array_key_exists('itemId', $_POST) ? $_POST['itemId'] : null;

    if(!is_null($itemId)){
        if(!in_array($itemId, $_SESSION['cart'])){
            $i = count($_SESSION['cart']);
            $_SESSION['cart'][$i] = $itemId;
            $sql = "UPDATE 
                        titems 
                    SET 
                        intInactive = 1
                    WHERE 
                        intItemId = ? ";

            $stmt = $conn->prepare($sql);
            $stmt->execute([$itemId]);
            echo ("Success");
            $_SESSION['cart_count'] = count($_SESSION['cart']);
        }
    }
} catch(Exception $ex) {
    error_log($ex->getMessage());
    logError($conn, 'ADD TO CART FAILED. Error: '. $ex->getMessage());
    echo("Fail");
}
    session_start();
    require_once('../config.php');

try{

    $itemId = array_key_exists('itemId', $_POST) ? $_POST['itemId'] : null;

    if(!is_null($itemId)){
        $i = array_search($itemId, $_SESSION['cart']);
        unset($_SESSION['cart'][$i]);

        $sql = "UPDATE 
                    titems 
                SET 
                    intInactive = 0
                WHERE 
                    intItemId = ? ";

        $stmt = $conn->prepare($sql);
        $stmt->execute([$itemId]);
        echo ("Success");
        $_SESSION['cart_count'] = count($_SESSION['cart']);
    }

} catch(Exception $ex) {
    error_log($ex->getMessage());
    logError($conn, 'REMOVE ITEM FROM CART FAILED. Error: '. $ex->getMessage());
    echo("Fail");
}
以下是用于触发此事件的Javascript:

// Add Item to Cart
    $('button.addtocart').on('click', function(){
        var btnId = this.id;
        var itemId = btnId.split('-')[1];

        $.ajax({
            method: 'POST',
            url: 'Backend/addtocart.php',
            data: {itemId: itemId},
            success: function(data){
                if(data == 'Success'){
                    swal({
                        title: "Item Added!",
                        text: "my message",
                        type: "success",
                        confirmButtonText: "OK"
                    },
                    function(isConfirm){
                        if (isConfirm) {
                            $("#row-"+itemId).fadeOut("slow");  
                            location.reload();                          
                        }
                    });
                } else {
                    swal({
                        title: "Error!",
                        text: "Something Went Wrong! Please Try Again.",
                        type: "error",
                        confirmButtonText: "OK"
                        });
                    }               
                } 
            })
        })
Javascript,用于在用户单击“从购物车中删除”时删除项目,我希望使用类似的Ajax调用来完成自动删除:

// Remove Item From Cart
    $('#CartTable :button').on('click', function(){
        var btnId = this.id;
        var itemId = btnId.split('-')[1];

        swal({
              title: "Remove?",
              text: "Are you sure you want to remove this item from your cart?",
              type: "warning",
              showCancelButton: true,
              confirmButtonText: "Yes, remove it!",
              cancelButtonText: "No, keep it!",
              closeOnConfirm: false
            },
            function(isConfirm){
                if (isConfirm) {
                    swal("Removed!", "That item has been removed from your cart!", "success");
                    location.reload();
                $.ajax({
                    method: 'POST',
                    url: 'Backend/removefromcart.php',
                    data: {itemId: itemId},
                    success: function(data){
                        if(data == 'Success'){
                            swal({
                                title: "Success!",
                                text: "Item Successfully Removed From Cart",
                                type: "success",
                                confirmButtonText: "OK"
                            });
                            $("#row-"+itemId).fadeOut("slow");
                        } else {
                            swal({
                                  title: "Error!",
                                  text: "Something Went Wrong! Please Try Again.",
                                  type: "error",
                                  confirmButtonText: "OK"
                                });
                            }
                        }
                    })
                } else {
                    swal("Cancelled", "Too good to let go!", "error");
                }
            }
        );
    })
最后,这里是用于从购物车中实际删除项目的php:

  session_start();
  require_once('../config.php');

try{ 
    $itemId = array_key_exists('itemId', $_POST) ? $_POST['itemId'] : null;

    if(!is_null($itemId)){
        if(!in_array($itemId, $_SESSION['cart'])){
            $i = count($_SESSION['cart']);
            $_SESSION['cart'][$i] = $itemId;
            $sql = "UPDATE 
                        titems 
                    SET 
                        intInactive = 1
                    WHERE 
                        intItemId = ? ";

            $stmt = $conn->prepare($sql);
            $stmt->execute([$itemId]);
            echo ("Success");
            $_SESSION['cart_count'] = count($_SESSION['cart']);
        }
    }
} catch(Exception $ex) {
    error_log($ex->getMessage());
    logError($conn, 'ADD TO CART FAILED. Error: '. $ex->getMessage());
    echo("Fail");
}
    session_start();
    require_once('../config.php');

try{

    $itemId = array_key_exists('itemId', $_POST) ? $_POST['itemId'] : null;

    if(!is_null($itemId)){
        $i = array_search($itemId, $_SESSION['cart']);
        unset($_SESSION['cart'][$i]);

        $sql = "UPDATE 
                    titems 
                SET 
                    intInactive = 0
                WHERE 
                    intItemId = ? ";

        $stmt = $conn->prepare($sql);
        $stmt->execute([$itemId]);
        echo ("Success");
        $_SESSION['cart_count'] = count($_SESSION['cart']);
    }

} catch(Exception $ex) {
    error_log($ex->getMessage());
    logError($conn, 'REMOVE ITEM FROM CART FAILED. Error: '. $ex->getMessage());
    echo("Fail");
}

我真的希望利用我已经准备好的代码来完成这项任务。我希望有人能帮助我!谢谢

在我购买之前的几个月里,有人可能会在购物车上添加物品,请不要这样做。好吧,正在出售的物品属于同类物品,因此如果有人无限期地将物品留在购物车中,其他用户将无法查看。当项目已注销时,它们将自动从用户的购物车中删除。不过,为了适应像你这样的人,我在用户配置文件中添加了“添加到收藏夹”按钮和收藏夹项目列表。你有将项目添加到表中的日期时间吗?目前没有,但我可以设置类似的内容。公平呼叫。。您需要在数据库中添加时间戳,然后可以每X分钟运行一次cron作业来清除旧项