【问题标题】:How to persist elements on shopping cart?如何在购物车上持久化元素?
【发布时间】:2018-12-11 08:29:37
【问题描述】:

我需要帮助来解决这个问题。

我有一个输入来指定用户想要订购的产品数量。当按下“添加到购物车”按钮时,买家购物篮还必须显示为该产品订购的数量。到目前为止,我只能显示图像、产品名称和价格(它们保存在数据库中并由我接管),但我什至无法显示它们的数量(未保存在数据库中)想要命令。

我正在使用用户会话将产品存储在我的购物车中。 谢谢!

这是我的代码。

<div class="col-md-6">
    <div class="summary entry-summary">

       <h1 class="shorter"><strong><?php echo $item_rs['product_name']; ?></strong></h1>

       <p class="price">
       <span class="amount"><?php echo $item_rs['product_price'] . ' $'; ?></span>
    </p>

    <p class="taller"><?php echo $item_rs['product_description']; ?> </p>

    <form enctype="multipart/form-data" method="post" class="cart">
        <div class="quantity">
            <input type="button" class="minus" value="-">
            <input type="text" class="input-text qty text" title="Qty" value="1" name="quantity" min="1" step="1">
            <input type="button" class="plus" value="+">
        </div>
        <button type="button"  class="btn btn-primary btn-icon add-cart" data-id="<?php echo $item_rs['id_prod']; ?>">Add to cart</button>
    </form>
</div> </div>

这是来自购物车的代码:

<tbody>
<?php
if(isset($arrayIds)) {
    foreach($arrayIds as $value) {
        $cart_sql = 'SELECT * FROM produs WHERE id_prod=' . $value;
        if($cart_query = mysqli_query($dbconnect, $cart_sql)) {
            $cart_rs = mysqli_fetch_assoc($cart_query);
        }
        ?>
        <tr>
            <td class="product-thumbnail">
                <img width="80" height="80" alt=""
                     class="img-responsive"
                     src="img/products/<?php echo $cart_rs['img_name']; ?>">
            </td>
            <td class="product-name">
                <?php echo $cart_rs['product_description']; ?><span
                    class="amount"></span><br>
                <?php echo $cart_rs['product_price'].' $'; ?>
            </td>
            <td class="product-quantity">

            </td>
            <td class="product-actions">
                <a title="Delete product" data-id="<?php echo $cart_rs['id_prod']; ?>" class="remove" href="#">
                    <i class="fa fa-times"></i>
                </a>
            </td>
        </tr>
        <?php
    }
}
?>
</tbody>

Seding 用户会话是使用 jQuery 进行的:

<script>
    $(document).ready(function(){
        $(document).on('click', '.add-cart',function(e){
            e.preventDefault();
            var data_id = $(this).attr('data-id');

            $.post('set_storage.php', {id: data_id});
            location.reload();
        });
    });
</script>

这是文件“set_storage.php”:

<?php
session_start();

$arrayIds = $_SESSION["id"];
if ($arrayIds) {
    $_SESSION["id"] = $arrayIds . ", " . $_POST['id'];
} else {
    $_SESSION["id"] = $_POST['id'];
}

?>

【问题讨论】:

  • 那么,为什么不将数量存储在用户的会话中呢?
  • 您也可以将购物车存储在浏览器本地存储中。
  • 为什么用 Javascript 和 jQuery 标记?这似乎是一个纯粹的 PHP 问题。 (你说你在会话中存储数据,但不显示任何读取或写入会话的代码。)
  • 和@NicoHaase一样我有点困惑
  • @NicoHaase 你能指导我完成这个过程吗?

标签: php jquery


【解决方案1】:

如果您以这种方式存储您的 ID,它可能会起作用:

<?php
session_start();

if(!isset($_SESSION['productsInCart'])) {
  $_SESSION['productsInCart'] = array();
}

$productIdToAdd = $_POST['id'];

if(isset($_SESSION['productsInCart'][$productIdToAdd]) === false) {
  $_SESSION['productsInCart'][$productIdToAdd] = 0;
}

$_SESSION['productsInCart'][$productIdToAdd]++;
?>

现在,数组$_SESSION['productsInCart'] 保存购物车中每个产品的 ID 作为键,每个产品的商品数量作为值

【讨论】:

    猜你喜欢
    • 2022-11-12
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2022-12-05
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多