php实现购物车功能(以大苹果购物网为例)


Posted in PHP onMarch 09, 2017

首先是几个简单的登录页面

<body>
<form action="chuli.php" method="post">
 <div style="margin-left: 500px; margin-top: 200px;
  height: 250px; width: 250px; border: 1px dashed black">
  <div style="margin-left: 100px; "><h3>登录</h3></div>
  <div style="margin-top: 20px">用户名:<input type="text" name="uid"/></div><br/>
  <div>密 码:<input type="password" name="pwd"/></div><br/>
  <div style="margin-left: 180px"><input type="submit" value="登录"/></div>
 </div>
</form>
</body>

登录页面写好之后,需要进入处理页面,从数据库中调出用户名和密码:

<?php
session_start(); //开启session 必须要写到第一行
header("Content-type:text/html;charset=utf-8");
$uid=$_POST["uid"]; //从登录页面获取到用户名和密码
$pwd=$_POST["pwd"];
include("DADB.class.php");
$db=new DADB();
$sql="select password from login where username='{$uid}'";
$arr=$db->Query($sql);
if($arr[0][0]==$pwd && !empty($pwd)) //判断所填写的密码和取到的密码是一样的,而且密码不能为空
{
 $_SESSION["uid"]=$uid;
 header("location:main.php");
}
else
{
 echo"登录失败";
}

这个显示的是登录页面

php实现购物车功能(以大苹果购物网为例)

下面要进入主页面了,从数据库中把所有的水果信息调出来,然后我们再来实现加入购物车这一项功能

<h2>大苹果购物网</h2>
<?php
session_start();
include("DADB.class.php");
$db=new DADB();
?>
<table border="1" width="100%" cellpadding="0" cellspacing="0">
 <tr>
  <td>代号</td>
  <td>水果名称</td>
  <td>水果价格</td>
  <td>原产地</td>
  <td>货架</td>
  <td>库存量</td>
  <td></td>
 </tr>
 <?php
 $uid=$_SESSION["uid"];
 $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>{$v[5]}</td>
  <td><a href='add.php?ids={$v[0]}'>购买</a></td> //这里的购买相当于添加购物车的功能
 </tr>";
 }
 ?>
 <?php
 //这里显示的是 购物车有多少产品,和产品的总价格
 $ann=array();
 if(!empty($_SESSION["gwc"]))
 {
  $ann=$_SESSION["gwc"];
 }
 $zhonglei = count($ann);
 $sum=0;
 foreach($ann as $k)
 {
  $sql1="select price from fruit where ids='{$v[0]}'";
  $danjia=$db->Query($sql1);
  foreach($danjia as $n)
  {
   $sum=$sum + $n[0]*$k[1];
  }
 }
 echo"购物车有<mark>{$zhonglei}</mark>种商品,总价格为<mark>{$sum}</mark>元";
 ?>
</table>
<div>
<a href="gouwuche.php" rel="external nofollow" rel="external nofollow" >查看购物车</a>
<a href="main.php" rel="external nofollow" rel="external nofollow" >浏览商品</a>
<a href="zhanghu.php" rel="external nofollow" rel="external nofollow" >查看账户</a> </div>
</body>

主页面显示图

php实现购物车功能(以大苹果购物网为例)

接下来是添加购物车页面

<?php
session_start();
$ids = $_GET["ids"];
if(empty($_SESSION["gwc"]))
{
  //1.购物车是空的,第一次点击添加购物车
  $arr = array(
    array($ids,1)
  );
  $_SESSION["gwc"]=$arr;
}
else
{
  //不是第一次点击
  //判断购物车中是否存在该商品
  $arr = $_SESSION["gwc"]; //先存一下
  $chuxian = false;
  foreach($arr as $v)
  {
    if($v[0]==$ids)
    {
      $chuxian = true;
    }
  }
  if($chuxian)
  {
    //3.如果购物车中有该商品
    for($i=0;$i<count($arr);$i++)
    {
      if($arr[$i][0]==$ids)
      {
        $arr[$i][1]+=1;
      }
    }
    $_SESSION["gwc"] = $arr;
  }
  else
  {
    //2.如果购物车中没有该商品
    $asg = array($ids,1);
    $arr[] = $asg;
    $_SESSION["gwc"] = $arr;
  }
}
header("location:gouwuche.php");

然后先是购物车主界面,如下

<h2>购物车中有以下商品:</h2>
<table cellpadding="0" cellspacing="0" border="1" width="100%">
  <tr>
    <td>商品名称</td>
    <td>商品单价</td>
    <td>购买数量</td>
    <td></td>
  </tr>
 <?php
  session_start();
  //$uid=$_SESSION["uid"];
  $arr=array();
  if(!empty($_SESSION["gwc"]))
  {
    $arr=$_SESSION["gwc"];
  }
  include("DADB.class.php");
  $db=new DADB();
  foreach($arr as $v)
  {
    global $db;
    $sql="select * from fruit where ids='{$v[0]}'";
    $att=$db -> Query($sql,1);
    foreach($att as $n)
    {
      echo"<tr>
    <td>{$n[1]}</td>
    <td>{$n[2]}</td>
    <td>{$v[1]}</td>
    <td>
<a href='shanchu.php?sy={$k}'>删除</a></td>
</tr>";} } ?> </table> <div> <a href="gouwuche.php" rel="external nofollow" rel="external nofollow" >查看购物车</a> <a href="main.php" rel="external nofollow" rel="external nofollow" >浏览商品</a> <a href="zhanghu.php" rel="external nofollow" rel="external nofollow" >查看账户</a> </div> 14 15 </body>

php实现购物车功能(以大苹果购物网为例)

紧接着我们就到了删除页面,当购物车只有一件商品和大于一件商品时做处理

<?php
session_start();
$sy = $_GET["sy"]; 
//根据索引找到该数据
$arr = $_SESSION["gwc"];
$arr[$sy]; //要删除的数据
//如果数量不为1,数量减1
if($arr[$sy][1]>1)
{
  $arr[$sy][1] = $arr[$sy][1]-1;
}
else //如果数量为1,移除
{
  unset($arr[$sy]);
}
$_SESSION["gwc"] = $arr; //最后存一下购物车的内容
header("location:gouwuche.php");

至于提交页面,我们要想到余额,库存等因素,所以比较繁琐,

不i怕,上代码。

<?php
  session_start();
header("Content-type:text/html;charset=utf-8"); //防止出现乱码
$uid=$_SESSION["uid"];
//先查一下账户余额
include("DADB.class.php");
$db=new DADB();
$ysql="select account from login where username='{$uid}'";
$yarr=$db->Query($ysql);
$yarr[0][0];//总额
//购物车的总价格,前面有写过
$arr=array();
if (!empty($_SESSION["gwc"]))
{
  $arr=$_SESSION["gwc"];
}
$sum=0;
foreach($arr as $v)
{
  $v[1];//购物车中产品的数量
  $psql="select price from fruit WHERE ids='{$v[0]}'";
  $parr=$db->Query($psql);
  foreach($parr as $k)
  {
   $k[0];//产品的单价
    $sum+=$k[0]*$v[1];
  }
}
//判断余额是否满足购买
if($yarr[0][0]>=$sum)
{//余额满足,要判断库存
  foreach($arr as $v)
  {
    $ksql="select number from fruit where ids='{$v[0]}'";
    $karr=$db->Query($ksql);
    $karr[0][0];//这是库存
    if($karr[0][0]<$v[1]) //表示库存不足,这时要给顾客提示库存不足
    {
      echo"库存不足";
      exit;
    }
  }
  //判断之后需要提交订单了
  //账户扣除余额
  $kcsql="update login set account=account-{$sum} where username='{$uid}'";
  $db->Query($kcsql,0);//这里是修改语句,所以要加上0
  //扣除库存
  foreach($arr as $v)
  {
    $kcksql="update fruit set number=number-$v[1] where ids='{$v[0]}'";
    $db->Query($kcksql,0);
  }
//所有的工作都做完了,这时我们就该提交订单了
// 这里我在数据库中做了两张表,把提交的订单添加到表中就可以保存了
//添加订单
$ddh = date("YmdHis");
$time = date("Y-m-d H:i:s");
$sdd = "insert into orders values('{$ddh}','{$uid}','{$time}')";
$db->Query($sdd,0);
//添加订单详情
  foreach($arr as $v)
  {
    $sddxq = "insert into orderdetails values('','{$ddh}','{$v[0]}','{$v[1]}')";
    $db->Query($sddxq,0);
  }
}
else
{
  echo "余额不足";
  exit;
}
?>

php实现购物车功能(以大苹果购物网为例)

php实现购物车功能(以大苹果购物网为例)

php实现购物车功能(以大苹果购物网为例)

php实现购物车功能(以大苹果购物网为例)

实现功能是没问题的

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
php 注册时输入信息验证器的实现详解
Jul 05 PHP
php代码审计比较有意思的例子
May 07 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
php图像处理类实例
Jul 28 PHP
php语言的7种基本的排序方法
Dec 28 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
PHP中include和require的区别实例分析
May 07 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
PHP针对redis常用操作实例详解
Aug 17 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 10 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 #PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 #PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 #PHP
php封装json通信接口详解及实例
Mar 07 #PHP
PHP获取真实客户端的真实IP
Mar 07 #PHP
php实现简单加入购物车功能
Mar 07 #PHP
mac os快速切换多个PHP版本的方法
Mar 07 #PHP
You might like
PHP 单引号与双引号的区别
2009/11/24 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
Django实现自定义404,500页面教程
2017/03/26 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python生成器与迭代器详解
2019/01/01 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
python3 xpath和requests应用详解
2020/03/06 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
毕业生自我鉴定范文
2013/11/08 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
啦啦队口号大全
2014/06/16 职场文书
婚前协议书范本两则
2014/10/16 职场文书
道歉短信大全
2015/05/12 职场文书
高三化学教学反思
2016/02/22 职场文书
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby