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简单的伪原创程序,配合商城采集用的
Oct 12 PHP
解析PHP缓存函数的使用说明
May 10 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
PHP基本语法总结
Sep 06 PHP
linux下实现定时执行php脚本
Feb 13 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
php实现的验证码文件类实例
Jun 18 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
php微信公众号开发之关键词回复
Oct 20 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中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
js 上传图片预览问题
2010/12/06 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
node.js到底要不要加分号浅析
2018/07/11 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
用python生成1000个txt文件的方法
2018/10/25 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
UNIX特点都有哪些
2016/04/05 面试题
日语专业个人求职信范文
2014/02/02 职场文书
高中生的自我评价
2014/03/04 职场文书
项目负责人任命书
2014/06/04 职场文书
少先队活动总结
2014/08/29 职场文书
工程部岗位职责
2015/02/10 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
详解Python函数print用法
2021/06/18 Python
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript