问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于php 构建购物车里面,用到session 书上有这样一段程序

发布网友 发布时间:2022-04-28 04:39

我来回答

3个回答

懂视网 时间:2022-04-28 09:00

php用session实现购物车的方法:首先创建前端代码实现加入购物车动作;然后在PHP文件中实现购物车数据的逻辑判断;接着根据数据加载列表;最后通过unset等函数实现商品的删除或金额计算即可。

推荐:《PHP视频教程》

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

效果图

代码很多,截取一部分

加入购物车(点击按钮添加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>

热心网友 时间:2022-04-28 06:08

$_session=array_merge($_session['cart'],$_request['cart']);这句请注意,前面数组变量是$_session,而不是$_session['cart'],就是说这一句并没有把$_request['cart']的内容添加到$_session['cart']中,所以后面foreach段是必须的。

热心网友 时间:2022-04-28 07:26

是不是为了去除重复项的?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在公交车上实施扒窃,会受到怎样的处罚? 交通违法行为识别 公交车扒窃会如何处罚? 郑州鱼缸清洗找哪家公司做得比较好? 郑州有没有专业维修鱼缸,清洗鱼缸的? ...的鱼缸,放在办公室养些鱼水草之类的。郑州哪里有卖这样的鱼缸。_百... 我们公司想要定做个观赏鱼缸,不知道郑州哪家公司最专业? 谁知道郑州生态鱼缸定做哪家做的效果最好? 联想电脑启用无线功能的功能键? 笔记本电脑怎么连接网笔记本电脑怎样连接无线网 php查询数组并替换字符 php怎么实现java接口的对称加密 java加密用PHP解密 php 非对称加密算法 可以破解吗 php中RSA加密,明文超长,需要分段加密该怎么做 请问在Php中有什么双向加密的方法?请告之方法名称及代码.谢谢 php 一共有几种加密方式? php实现rsa算法,该怎么处理 PHP代码如何加密? PHP中给源代码加密的几种方法 php代码怎么加密最好,不能破解的那种 [PHP]关于mcrypt加密方法的参数 php 非对称加密 用于什么情况 php 如何正则替换数组 PHP正则匹配数字问题 php如何用正则表达式去掉数字 PHP正则表达式替换时,如何直接替换成数组值. 在线等 php 正则替换 php中 正则表达式替换问题 php正则匹配数字 thinkphp做的session购物车,求详细代码。有完整例子的可以发下。非常感谢 请问一下php做购物车为什么要用SESSION来实现呢? ASP.NET中如何用session来实现购物车的功能? php购物车功能 结合session和数据库怎么结合求代码 php 最新的购物车session类 php购物车如何获取多个商品的id,用$_SESSION[&#39;id&#39;]=$_SESSION[&#39;id&#39;].$GET[&#39;id&#39;].&quot;@&quot;这个书上的方法。 php 类中 通过成员方法访问成员变量有什么好处,我知道是争对于安全性,但不能解释怎么个安全法, 在PHP方法(或成员函数)上除了对象可作为参数限定类型外,还有什么可作为参数限定类 PHP定义一个类,并且定义一个成员方法,该成员方法具有一个参数,传递一个数组,返回当前传递数组的倒序排序 php中函数定义的问题 php的成员方法中可以写自定义函数么 php面向对象中成员方法传参问题,求解 PHP中,怎么在成员函数当中调用自己的成员属性?除了静态调用之外还有别的方法吗? 在php中,如何引用成员函数autocommit() php中self的真正含义是什么?为什么可以调用父类 的成员和方法? - PHP进阶讨论 php,类外函数调用类的成员函数的方法 PHPCMS如何禁止IP访问网站 PHP让某个IP无法访问网站? 如何在php服务器不访问ip,访问域名形式访问网页 网站某php页面被流量攻击.....如何获得访问该页面的IP并禁止访问