php 加入购物车 session,php用session实现购物车的方法

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

e99e0c38939231c0e508d6c935e9d93b.png

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

效果图

09c5010052274520a2ad843c5985a7f1-0.jpg

f9a8d1cb02398e15a4d9c40d4c780daf.png

代码很多,截取一部分

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

34f51d0aca49192c0eeab24260b2985f.png// 加入购物车

function addshopping() {

$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');

}

根据数据加载列表

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'];

?>

<?php echo $clean['user']; ?>

<?php echo $clean['title']; ?>

规格:红色,23

¥<?php echo $clean['price']; ?>

?>

删除选中的商品// echo '

';// print_r($_SESSION['gwc']);// echo '
';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 '

';// print_r( $dataArr);// echo '
';

金额计算

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;

}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值