博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实例练习:购物车
阅读量:5821 次
发布时间:2019-06-18

本文共 7003 字,大约阅读时间需要 23 分钟。

运用session实现购物车的内容的存储,

数据库包含4个表分别为

  1.login表,每列代表用户名、姓名、密码、余额

  

  2.fruit表,每列代表主键自增长列、商品名称、商品单价、产地、堆数、库存

  

  3.orders表,每列代表订单编号、用户名、订单形成时间

  

  4.orderdetails表,每列代表主键自增长列、订单编号、商品编号、数量

  

 

共10个网页,功能有登录验证,防止绕过登录,购物车添加、删除、清除,查询账户,提交订单等

1.

无标题文档

登录

用户名
密码

 

2.

strquery($sql); //以返回字符串方法执行SQL语句并用$mm接收 if($pwd==$mm){ //判断传过来的密码和查询出来的密码是否相同 $_SESSION["user"] = $uid; //相同说明验证成功,把用户名值赋予$_SESSION["user"]并返回1 echo "1"; }else{ echo "0"; //不相同说明验证失败返回0 }

 

3.

无标题文档
session_start();    //开启session    if(empty($_SESSION["user"])){    //防止绕过登录访问        header("location:gwc-2-d.php");        exit;        }
?>    查看商品    
查看账户
查看购物车
清空购物车
退出
水果名称 水果价格 水果产地 水果库存
require_once("../DBDA.class.php");    //引用数据库连接类            $db = new DBDA();                $sql = "select * from fruit ";    //创建SQL语句,查询水果表的所有内容            $arr = $db->query($sql);    //执行SQL语句并用$arr接收            foreach($arr as $v){    //遍历并输出商品内容                echo "                {
$v[1]} {
$v[2]} {
$v[3]} {
$v[5]} "; }
  ?>    

 

4.

$v){ //遍历出此code的数组,将代表数量的数字加一,注意这里要取出此code所在数组的索引,以直接操作数组而不是代表值$v if($v[0]==$code){ $arr[$k][1]++; } $_SESSION["gwc"] = $arr; //将修改后的二维数组重新赋值给$_SESSION["gwc"] } }else{ //判断出$_SESSION["gwc"]的数组中不包含含有code的数组 $arr1 = array($code,1); //创建一个数组包含code和数字1,代表存入一个此商品 $_SESSION["gwc"][] = $arr1; } } if(!empty($_SESSION["gwc"])){ //判断$_SESSION["gwc"]是否为非空, $arr = $_SESSION["gwc"]; //不为空则将$_SESSION["gwc"]交给$arr $count = count($arr); //取$arr的元素数量代表商品种类数 $zj=0; //设$zj代表总价格 foreach($arr as $v){ //遍历查询累加价格 $sql = "select price from fruit where ids = '{
$v[0]}'"; //创建SQL语句,查询商品单价 $dj = $db->strquery($sql); //执行SQL语句把单价交给$dj $zj += $v[1]*$dj; //累加总价 } echo "{
$count}|{
$zj}"; //输出返回值为 商品种类数|总价 格式 }else{ echo "0|0"; //购物车为空返回 0|0 } /* *用来判断一个二维数组$arr中某个数组中是否包含某个元素$x *@param $arr 二维数组 *@param $x 元素 *@return 返回true或者false */ function panDuan($arr,$x){ $result = false; foreach($arr as $v){ if($v[0]==$x){ $result = true; } } return $result; }

 

5.

 

6.

无标题文档
session_start();    //开启session    if(empty($_SESSION["user"])){    //防止绕过登录访问        header("location:gwc-2-d.php");        exit;        }    require_once("../DBDA.class.php");    //引入数据库连接类    $db = new DBDA();
?>    
水果名称 水果单价 水果数量 操作
if(!empty($_SESSION["gwc"])){    //判断$_SESSION["gwc"]是否非空                $arr = $_SESSION["gwc"];    //非空将$_SESSION["gwc"]交给$arr                foreach($arr as $v){        //遍历数组                    $sql = "select name,price from fruit where ids = '{
$v[0]}'";//创建SQL语句,查询商品名和单价 $arr1 = $db->query($sql); //执行SQL语句并用数组接收 echo " {
$arr1[0][0]} {
$arr1[0][1]} {
$v[1]} "; //输出表格,包括商品名,单价,选中数量,操作按钮,操作按钮中包含自定义属性code,值为商品的主键值 } $zj=0; //设$zj代表总价格 foreach($arr as $v){ //遍历查询累加总价 $sql = "select price from fruit where ids = '{
$v[0]}'"; $dj = $db->strquery($sql); $zj += $v[1]*$dj; } echo "
总计{
$zj}元
"; //输出总价 }
?>        

 

 7.

$v){ //循环遍历 if($v[0]==$code && $v[1]>1){ //判断此code的数量是否大于一,大于一则数量减一 $arr[$k][1]--; $_SESSION["gwc"] = $arr; }else if($v[0]==$code && $v[1]=1){ //判断此code数量是否为一,为一则清除此code所在的数组 unset($arr[$k]); $_SESSION["gwc"] = $arr; }}

 

8.

strquery($sql); //执行SQL语句并把值赋予$dj和$kc $kc = $db->strquery($sql1); $zj += $v[1]*$dj; //累加总价 if($kc<$v[1]){ //判断库存是否小于选中的该商品选中的数量 echo "1"; //小于则返回1,并停止执行之后的代码 exit; } } $sql = "select account from login where username = '{
$user}'"; //创建SQL语句查询用户的账户余额 $yue = $db->strquery($sql); //执行SQL语句并用$yue接收 if($yue<$zj){ //判断余额是否小于总价 echo "0"; //小于则返回0并停止执行之后的代码 exit; } $msy = $yue-$zj; //$msy为用户余额减总价 $time = date("Y-m-d H:i:s"); //$time为当前的格式化时间 $arr = $_SESSION["gwc"]; //$arr接收$_SESSION["gwc"] $code = $user.time(); //$code为用户名和当前时间戳的拼接 $sql1 = "insert into orders values('{
$code}','{
$user}','{
$time}') "; //创建SQL语句,给orders添加数据 $db->query($sql1,1); $sql2 = "update login set account={
$msy} where username='{
$user}' "; //创建SQL语句,修改用户余额 $db->query($sql2,1); foreach($arr as $v){ $sql3 = "update fruit set numbers=numbers-{
$v[1]} where ids = '{
$v[0]}' "; //创建SQL语句,修改对应商品的库存 $db->query($sql3,1) ; } foreach($arr as $v){ $sql4 = "insert into orderdetails values(0,'{
$code}','{
$v[0]}','{
$v[1]}')"; //创建SQL语句给orderdetails添加数据 $db->query($sql4,1); } unset($_SESSION["gwc"]); //清除购物车的session echo "2"; //返回2 }

 

9.

无标题文档
session_start();    //开启session    if(empty($_SESSION["user"])){    //防止绕过登录访问        header("location:gwc-2-d.php");        exit;        }
?>
用户名 姓名 余额
require_once("../DBDA.class.php");    //引入数据库连接类            $db = new DBDA();            $user = $_SESSION["user"];    //取user值            $sql = "select * from login where username = '{
$user}'"; //创建SQL语句查询该user的数据 $arr = $db->query($sql); //执行SQL语句并用$arr接收 echo " {
$arr[0][0]} {
$arr[0][1]} {
$arr[0][3]} "; //输出数据
?>

 

10.

 

转载于:https://www.cnblogs.com/zxbs12345/p/8449196.html

你可能感兴趣的文章
php5.5+apache2.4+mysql5.7在windows下的配置
查看>>
计算机硬件知识总结
查看>>
Django之URL控制器(路由层)
查看>>
[Python3网络爬虫开发实战] 6.3-Ajax结果提取
查看>>
es6 promise 前凑
查看>>
AVR中的 JTAG & USART 不兼容~~~害我搞得这么晚!!!
查看>>
将浏览器地址栏中的 Request 参数显示成中文
查看>>
利用css布局效果图
查看>>
ElasticSearch 集群健康
查看>>
Solr6.6.0 用 SimplePostTool索引文件的启示
查看>>
谈谈跨多系统的项目测试
查看>>
Oracle 计算两个时间的差值
查看>>
Delegate,Action,Func,匿名方法,匿名委托,事件
查看>>
微信小店开发(2) DIY货架
查看>>
性能测试分析-之系统端口不够用
查看>>
IO测试工具之fio详解
查看>>
Diamond Collector (动态规划)
查看>>
ASP.NET Core MVC I/O编程模型
查看>>
写一个dos批处理文件-更新svn,删除以前的内容,复制新的内容过来,启动nginx,启动notepad++编辑一个文件...
查看>>
桌面文件自动整理脚本
查看>>