//
购物车的开发思路有很多种,一种是建立购物车数据表,这样的好处是商品加入购物车后如果不清除的话,商品永远停在购物车里面,当然缺点就是会增加服
务器的负担。当然还有另外一种思路,就是不需要数据表,运用session机制,购物商品用session存储。这个的好处是可以减少服务器的负担,缺点
是如果加入购物车后不提交生成订单的话,过一段时间session失效后,购物车会自动清空。
我们今天介绍的是第二种开发方案
<?php
//首先我们会用到sesssion 开启它
session_start();
/*
* 思路:$_SESSION['gwc'];
* 如果这个数组是空的那么表示我们还没有购买任何的商品;
* 如果不是空的表示购物车里面已经有了商品;
* 我们首先来分析一下$_SESSION['gwc']这个数组的结构
*
* print_r($_SESSION['gwc']);
*
* 结果:array(1=>4,4=>3,12=>1)
* 数组的下标表示购买商品的id,值代表了购买商品的个数
*
* */
//获得商品ID
$id=$_GET['id'];
//首先判断购物车是不是空的,如果是空的表示购物车无商品,直接添加
if(!is_array($_SESSION['gwc'])){
$_SESSION['gwc'][$id]=1;
}else{
//如果不是数组说明已经有了商品
//判断在购物车的下标当中,是否已经存在该ID所存的数量
//接收物品的ID检查在不在购物车的下标中
//我们使用函数 array_keys 反转 然后检测在不在其中
if(in_array($id,array_keys($_SESSION['gwc']))){
//如果在里面那么我们就在它的基础上加一
$_SESSION['gwc'][$id]+=1;
}else{
//如果不在里面那么我们就设定这个物品为1
$_SESSION['gwc'][$id]=1;
}
}
//然后我们链接数据库主要是为了遍历我们购物车中的物品的信息,图片价格等
$conn=mysql_connect('localhost','root','root123456');
if(mysql_errno()){
mysql_error();
exit;
}
mysql_select_db('testdb');
mysql_set_charset('utf8');
echo '<table width="100%" border="1">';
$total=0;
//将数组中的 购买商品的id ,数量遍历出来
foreach($_SESSION['gwc'] as $key=>$value){
//去服务器端查询商品信息
$sql="select name,price,pic from shop_gwc where id=$key";
$result=mysql_query($sql);
//因为一个ID只能对应一个商品,上面已经有循环了,直接读出对应的信息来即可
$row=mysql_fetch_assoc($result);
echo '<tr>';
echo '<td>名称'.$row['name'].'</td>';
echo '<td>单价'.$row['price'].'</td>';
echo '<td>数量'.$value.'</td>';
echo '<td>图片<img src="img/'.$row['pic'].' "/></td>';
//计算单个商品总价
echo '<td>共计'.($value*$row['price']).'</td>';
echo '<td><a href="del.php?id='.$key.'">删除商品</a></td>';
echo '</tr>';
//计算所有商品总价
$total+=$value*$row['price'];
}
echo '<tr><td colspan="5">总价为'.$total.'</td></tr>';
echo '</table>';
/*
* 购物车的id我们使用unset 来销毁相应的
*
*
*/ $id=$_GET['id'];
unset($_SESSION['gwc'][$id]);
?>
然成科技是获得云南省科技厅、省财政厅、省税务局等机构认定的高新技术企业。公司定位于高端网站设计、系统开发、APP开发、微信公众号、微信小程序开发。拥有多个软著权!