php用session实现购物车的方法

藏色散人
发布: 2020-08-29 09:20:53
原创
3940人浏览过
php用session实现购物车的方法:首先创建前端代码实现加入购物车动作;然后在PHP文件中实现购物车数据的逻辑判断;接着根据数据加载列表;最后通过unset等函数实现商品的删除或金额计算即可。

php用session实现购物车的方法

推荐:《PHP视频教程

PHP 使用session实现购物车效果(点击按钮添加数据,根据数据生成列表,删除选中的商品,点击按钮时计算金额)

效果图

代码很多,截取一部分

法语写作助手
法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31
查看详情 法语写作助手

立即学习PHP免费学习笔记(深入)”;

加入购物车(点击按钮添加session数据)

在这里插入图片描述

    // 加入购物车
    function addshopping() {
      <?php
      $db = db($_GET['db']);
      $id = $formatData['id'];
      $user = $formatData['user'];
      // 当购物车没有时,即没有session数据时
      if (empty($_SESSION['gwc'])) {
        $arr = array(array('user' => $user, 'db' => $db, 'id' => $id, 'num' => 1));
        $_SESSION['gwc'] = $arr;
      } else {
        // 当购物车有数据时
        $arr = $_SESSION["gwc"];
        $order = false;
        foreach ($arr as $key => $value) {
          // 如果数据中有了这个数据
          if ($value['user'] == $user && $value['db'] == $db && $value['id'] == $id) {
            $index = $key;  //保存这个相同数据的下标,以便操作
            $order = true;	
            //定义一个变量,看是佛有相同的数据,需要注意的是,不能再这个if语句中else,否则后面的语句
            //虽然会使数量加一,但是还是会多创建一条数据,为什么,自己想想就能明白,只是当时当局者迷
          }
        }
        if ($order) {
          // 如果该商品在购物车存在,让数量加1
          $arr[$index]['num']++;
        } else {
          // 如果该商品购物车里面不存在,造一个一维数组扔到二维里面
          $arr[] = array('user' => $user, 'db' => $db, 'id' => $id, 'num' => 1);
        }
        $_SESSION["gwc"] = $arr;
      }

      ?>
      console.log('addshopping');
    }
登录后复制

根据数据加载列表

    <!-- 购物车列表 -->
    <?php
    foreach ($_SESSION['gwc'] as  $dataList) {
        $clean = array();
        $clean['user'] = $dataList['user'];
        $clean['db'] = $dataList['db'];
        $clean['id'] = $dataList['id'];
        $clean['num'] = $dataList['num'];

        $res = $conn->fetchRow("SELECT * FROM {$clean['db']}  WHERE id={$clean['id']}");
        $clean['title'] = $res['title'];
        $clean['price'] = $res['price'];
        $clean['face']  = $res['face'];

    ?>
        <p class="weui-content">
            <p class="weui-panel weui-panel_access">

                <p class="weui-panel__hd"><span><?php echo  $clean['user']; ?> </span><a href="javascript:void(0)" class="wy-dele"><!-- 删除 --></a></p>

                <p class="weui-panel__bd">
                    <p class="weui-media-box_appmsg pd-10">
                        <p class="weui-media-box__hd check-w weui-cells_checkbox">
                            <label class="weui-check__label" for="cart-<?php echo $clean['db'] . '-' . $clean['id'] ?>">
                     
                                <p class="weui-cell__hd cat-check">
                                    <input type="checkbox" class="weui-check" name="cartpro" id="cart-<?php echo $clean['db'] . '-' . $clean['id'] ?>"><i class="weui-icon-checked"></i>
                                </p>
                            </label>
                        </p>
                        <p class="weui-media-box__hd"><a href="pro_info.php?db=<?php echo  $clean['db']; ?>&id=<?php echo  $clean['id']; ?>"><img class="weui-media-box__thumb" src="<?php echo  $clean['face'];  ?>" alt="" style="height: 100%"></a></p>
                        <p class="weui-media-box__bd">
                            <h1 class="weui-media-box__desc"><a href="pro_info.php?db=<?php echo  $clean['db']; ?>&id=<?php echo  $clean['id']; ?>" class="ord-pro-link"><?php echo  $clean['title'];  ?></a></h1>
                            <p class="weui-media-box__desc">规格:<span>红色</span>,<span>23</span></p>
                            <p class="clear mg-t-10">
                                <p class="wy-pro-pri fl">¥<em class="num font-15 price"><?php echo  $clean['price'];  ?></em></p>
                                <p class="pro-amount fr">
                                    <!-- 购买的数量 -->
                                    <input type="hidden" name="" class="datanum" value="<?php echo  $clean['num']; ?>">
                                    <!-- 提交删除的数据 -->
                                    <input type="hidden" name="" class="rmdata" value="shopping.php?db=<?php echo  $clean['db']; ?>&id=<?php echo  $clean['id'];?>">
                                    <p class="Spinner"></p>
                                </p>
                            </p>
                        </p>
                    </p>
                </p>


            </p>
        </p>
    <?php }
    ?>
登录后复制

删除选中的商品

// echo '<pre>';// print_r($_SESSION['gwc']);// echo '</pre>';if(isset($_GET['db']) && isset($_GET['id'])){
    $dataArr = $_SESSION['gwc'];
    foreach ($dataArr as $key => $value) {
        if($value['db'] == $_GET['db'] && $value['id'] == $_GET['id']){
            unset($dataArr[$key]);
        }
    }
    $_SESSION['gwc'] = $dataArr;
    header("Location:shopping.php");}// echo '<pre>';// print_r( $dataArr);// echo '</pre>';
登录后复制

金额计算

    <!-- 金额计算 -->
    <script>
        window.onload = function() {
            var cartproAll = document.querySelectorAll('input[name=cartpro]');	
            var datanum = document.querySelectorAll('.datanum');   
            var numAll = document.querySelectorAll('.Amount');
            var DisDe  = document.querySelectorAll('.DisDe');
            var Increase  = document.querySelectorAll('.Increase');

            //  购买数量的多少
            numAll.forEach((item,i) => {
                item.value = datanum[i].value;
            })

            // 点击加号
            DisDe.forEach((item, i) => {
                item.onclick = function() {
                    computedPrice();
                }
            })
            // 点击减号
            Increase.forEach((item, i) => {
                item.onclick = function() {
                    computedPrice();
                }
            })
            // 点击单选时计算金额
            cartproAll.forEach((item, i) => {
                item.onclick = function() {
                    computedPrice();
                }
            })
        }
        function computedPrice(){
            var cartproAll = document.querySelectorAll('input[name=cartpro]');      //获取是否点击
            var price = document.querySelectorAll('.price');                        //价钱
            var price_total = document.querySelector('.price_total');               //价钱总数   
            var numAll = document.querySelectorAll('.Amount');                      //数量
            var total = 0;
            price_total.innerHTML = 0;
            cartproAll.forEach((item, i) => {
                if (item.checked == true) {
                        total += parseFloat(price[i].innerHTML) * parseFloat(numAll[i].value);
                    }
            })
            price_total.innerHTML = total;
        }
    </script>
登录后复制

       

以上就是phpsession实现购物车的方法的详细内容,更多请关注php中文网其它相关文章!

相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号