//

Information for details

PHP商城开发之购物车的使用

购物车的开发思路有很多种,一种是建立购物车数据表,这样的好处是商品加入购物车后如果不清除的话,商品永远停在购物车里面,当然缺点就是会增加服 务器的负担。当然还有另外一种思路,就是不需要数据表,运用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开发、微信公众号、微信小程序开发。拥有多个软著权!


  • 滇公网安备 53010202001388号