zoukankan      html  css  js  c++  java
  • 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='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='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");
  • 相关阅读:
    文件上传和下载
    代理模式
    设计模式分类
    单例模式
    抽象工厂模式
    成长
    Java教程
    python面试大全
    python入门教程
    收藏网摘
  • 原文地址:https://www.cnblogs.com/mengshenshenchu/p/6834189.html
Copyright © 2011-2022 走看看