首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >结合PHP和Javascript从购物车中删除商品

结合PHP和Javascript从购物车中删除商品
EN

Stack Overflow用户
提问于 2018-07-29 21:01:57
回答 1查看 273关注 0票数 3

我正在为我的姐姐建立一个在线商店,当我单击产品的X图标(onclick="") )时,我正在努力从购物车($_SESSION)中删除特定的商品。

代码语言:javascript
复制
<?php
  if (empty($_SESSION['cart'])) {
      $_SESSION['cart'] = array();
  }
?>

<div class="cart-content d-flex">

<!-- Cart List Area -->
<div class="cart-list">

    <?php
    $subtotal = 0;
    $livrare = 17;
    $subtotal_modif = 0 . " Lei";
    $object = new Produs();

    $cartItems = $_SESSION['cart'];

    foreach ($cartItems as $item):
    $rows = $object->getRows("SELECT * FROM produs");

    foreach ($rows as $row) {
        //$subtotal += $row['pret_produs'];

    if ($item['id'] == $row['id_produs']) {
        $imagini = $object->getRows("SELECT * FROM imagini WHERE id_produs_imagine = ? LIMIT 1", [$row['id_produs']]);

        $pret = $row['pret_produs'];
        $pret_modif = str_replace('.', ',', $row['pret_produs']) . " LEI";
        $pret_vechi = $row['pret_vechi_produs'];
        $pret_redus_modif = str_replace('.', ',', $row['pret_vechi_produs']) . " LEI";

        $subtotal = $subtotal + ($pret * $item['cantitate']);
        $subtotal_modif = str_replace('.', ',', $subtotal) . " LEI";
    ?>


    <!-- Single Cart Item -->
    <div class="single-cart-item">
        <a href="#" class="product-image">
            <?php foreach ($imagini as $img) {

            echo '<img src="'. $object->photoPath() . $img['nume_imagine'] .'" alt="">';
            } ?>
            <!-- Cart Item Desc -->
            **<div class="cart-item-desc">
                <span class="product-remove"><i onclick="removeItem('<?php $item['id']; ?>')" class="fa fa-close" aria-hidden="true"></i></span>**

                <!-- <span class="badge">Mango</span> -->

                <h6><?php echo $row['nume_produs']; ?></h6>
                <p class="size">Marime: <?php echo $item['marime']; ?></p>
                <p class="color">Cantitate: <?php echo $item['cantitate']; ?></p>
                <p class="price"><?php echo $pret; ?></p>
            </div>
        </a>
    </div>
    <?php } }
    endforeach;
    ?>

</div>

我正在考虑在页面末尾做一些类似的事情,但我不知道如何正确地做:

代码语言:javascript
复制
<script>
    function removeItem(itemID) {
        <?php unset($_SESSION['cart']['<script>itemID</script>']); ?>
    }
</script>

我不知道如何结合PHP和JavaScript。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-29 21:31:09

您可以将以下代码放在PHP脚本的顶部:

代码语言:javascript
复制
if ( empty( $_SESSION['cart'] ) ) {
    $_SESSION['cart'] = [];
}

if ( isset( $_POST['remove_item'] ) ) {
    $itemID = $_POST['remove_item'];
    if ( isset( $_SESSION['cart'][ $itemID ] ) ) {
        unset( $_SESSION['cart'][ $itemID ] );
    }

    echo $itemID;
    die();
}

// THE REST OF YOUR PHP CODE.

根据项的id为项的容器提供唯一的id:

代码语言:javascript
复制
<div class="single-cart-item" id="single-cart-item-<?php echo $item['id']; ?>">
    <!-- --------------- -->
</div>

在你的JS中是这样的:

代码语言:javascript
复制
<script type="text/javascript">

    function removeItem( itemID ) {

        // make AJAX request to server to remove item from session.
        var xhttp = new XMLHttpRequest();
        xhttp.open("POST", "cart.php", true);
        xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhttp.send("remove_item=" + itemID);
        xhttp.onreadystatechange = function() {
            if (this.readyState === 4 && this.status === 200) {
                var element = document.getElementById("single-cart-item-" + this.responseText);
                if (element !== null) {
                    element.remove();
                }
            }
        };



    }

</script>

函数removeItem( itemID )正在对您的PHP脚本进行AJAX调用。它将项目ID作为POST值传递。将cart.php替换为正确的路径(购物车页面的URL)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51580579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档