首页 > 代码库 > session实现购物车功能

session实现购物车功能

购物车功能是生活中经常使用的,这里以fruit表为例,做一个简单的购物车:

技术分享

首先要将fruit表显示出来:

技术分享

<?php
session_start();?>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
    <tr>
        <td>代号</td>
        <td>名称</td>
        <td>单价</td>
        <td>产地</td>
        <td>库存</td>
        <td>操作</td>
    </tr>
    <?php
    require "DBDA.class.php";
    $db = new DBDA();
    $sql = "select * from fruit";
    $arr= $db->query($sql);
    foreach($arr as $v)
    {
        echo "<tr>
        <td>{$v[0]}</td>
        <td>{$v[1]}</td>
        <td>{$v[2]}</td>
        <td>{$v[3]}</td>
        <td>{$v[4]}</td>
        <td><a href=http://www.mamicode.com/shengchan.php?ids={$v[0]}>加入购物车</a></td>
    </tr>";    
    }
</table>

然后是重点,在处理页面,要有一个购物车的逻辑思维:

如果是第一次添加购物车,造一个二维数组存到SESSION里面
如果不是第一次添加,有两种情况
1.如果该商品购物车里面不存在,造一个一维数组扔到二维里面
2.如果该商品在购物车存在,让数量加1

<?php
session_start();
$ids = $_GET["ids"];
//array(‘k001‘,2)
//array(array(‘k001‘,2),array(‘k002‘,1))

//如果是第一次添加购物车,造一个二维数组存到SESSION里面
//如果不是第一次添加,有两种情况
//1.如果该商品购物车里面不存在,造一个一维数组扔到二维里面
//2.如果该商品在购物车存在,让数量加1
if(empty($_SESSION["gwc"]))
{
    $arr=array(array($ids,1));
    $_SESSION["gwc"]=$arr;    
}
else
{
    $arr = $_SESSION["gwc"];
    $bs=false;//是否出现
    foreach($arr as $v)
    {
        if($v[0]==$ids)
        {
            $bs = true;
        }
    }
    if($bs)
    {
        //2.如果该商品在购物车存在,让数量加1
        foreach($arr as $k=>$v)
        {
            if($v[0] == $ids)
            {
                $arr[$k][1]++;
            }
        }
        $_SESSION["gwc"] = $arr;
    }
    else
    {
        //1.如果该商品购物车里面不存在,造一个一维数组扔到二维里面
        $attr = array($ids,1);
        $arr[] = $attr;
        $_SESSION["gwc"] = $arr;
    }
}
header("location:list.php");

然后再创建购物车查看页面:

技术分享

 

<table width="100%" border="1" cellpadding="0" cellspacing="0">
    <tr>
        <td>代号</td>
        <td>名称</td>
        <td>单价</td>
        <td>数量</td>
        <td>操作</td>
    </tr>
    
    <?php
    session_start();
    $arr = $_SESSION["gwc"];
    require "DBDA.class.php";
    $db= new DBDA();
    $sum= 0;
    foreach($arr as $k=>$v)
    {
        $v[0]; $v[1];
        $sql = "select * from fruit where ids=‘{$v[0]}‘";
        $af = $db->query($sql);
        
        echo "<tr>
        <td>{$v[0]}</td>
        <td>{$af[0][1]}</td>
        <td>{$af[0][2]}</td>
        <td>{$v[1]}</td>
        <td><a href=http://www.mamicode.com/shanchu.php?sy={$k}>删除</a></td>
    </tr>";
        $sum = $sum +$v[1]*$af[0][2];//输出总价格    
    }
    
    ?>
</table>
<div>
<?php
$gs = count($arr);//购物车里面有几个商品

echo "该购物车里面总共有{$gs}种商品,商品的总价为:{$sum}元";

?>

 最后是删除商品页面:

<?php
session_start();
$sy = $_GET["sy"];

//如果该水果数量大于1,减1
//如果该水果数量等于1 移除
$arr = $_SESSION["gwc"];

if($arr[$sy][1]>1)
{
    //如果该水果数量大于1,减1
    $arr[$sy][1]--;
}
else
{
    unset($arr[$sy]);
    $arr = array_values($arr);
}

$_SESSION["gwc"] = $arr;
header("location:kan.php");

 

session实现购物车功能