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

<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"登录失败";
}

  这个显示的是登录页面

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

<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">查看购物车</a>
<a href="main.php">浏览商品</a>
<a href="zhanghu.php">查看账户</a> </div> </body>

  主页面显示图

接下来是添加购物车页面

<?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">查看购物车</a> <a href="main.php">浏览商品</a> <a href="zhanghu.php">查看账户</a> </div> 14 15 </body>

  

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

<?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 实现购物车功能,以大苹果购物网为例,上图上代码。。。。的更多相关文章

  1. 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果

    基于vue2.0打造移动商城页面实践 地址:https://www.jianshu.com/p/2129bc4d40e9 vue实现商城购物车功能 地址:http://www.jb51.net/art ...

  2. ASP.NET之电子商务系统开发-2(购物车功能)

    一.前言 继上次的首页数据列表后,这是第二篇.记录一下购物车这个比较庞大的功能,可能实现的方法跟其他人有点不一样,不过原理都差不多,是将cookie存数据库里面的. 二.开始 首先看一下购物车流程及对 ...

  3. APP UI结构-首页功能点大集锦,很干很详细

    APP UI结构的系列的文章有一段时间没有更新了,因为最近在学一些新东西和看一些新书籍,适当的给自己充电也是为了更好的输出,言归正传,今天想跟大家聊的是和首页相关的一些内容,可能有些内容最近有的小伙伴 ...

  4. jQuery 复制节点的元素实现加入到购物车功能

    描写叙述: 用户点击左边div中的商品,相应商品会自己主动加入到右面的div中,类似电子商城中的加入到购物车功能. 主要用到了jquery中的复制节点功能,基本原理是首先获取点击的元素,然后将对应信息 ...

  5. JQuery编写简易京东购物车功能

    前天无意间看到有一位程序员的博客,有一篇名为无聊时编写的购物车,看了之后,只是觉得很垃圾,因为代码很臃肿,当然我写的也不咋地,当然我也是复 习一下所学的js,再敲这个的期间遇到了如下问题,1:子元素父 ...

  6. 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. jQuery 复制节点的元素实现添加到购物车功能

    描述: 用户点击左边div中的商品,对应商品会自动添加到右面的div中,类似电子商城中的添加到购物车功能. 主要用到了jquery中的复制节点功能,基本原理是首先获取点击的元素,然后将相应信息进行克隆 ...

  8. Android 购物车功能的实现

    首先,众所周知,ListView是Android最常用的控件,可以说是最简单的控件,也可以说是最复杂的控件. 作为一个Android初级开发者,可能会简单的ListView展示图文信息. 作为一个有一 ...

  9. 一款功能强大的iphone购物应用源码

    一款功能强大的iphone购物应用源码,这款应用源码比较完整的,并且还支持信用卡支付服务等功能的,基本实现了我们常用的购物应用功能了,实现商品的基本展示功能,还具有完整的用户管理,以及完整的购物流程等 ...

随机推荐

  1. 外显率&显性上位

    外显率(penetrance): 外显率是指条件下,群体中某一基因型(通常在杂合子状态下)个体表现出相应表型的百分率.外显率等于100%时称为完全外显(complete penetranc)低于100 ...

  2. Angular - - ngCsp、ngFocus、ngBlur、ngForm

    ngCsp 处理CSP(上下文安全策略)的支持. 当开发如google浏览器的扩展时候这个就必须使用. CSP禁止应用程序使用eval和Function(string)生成的函数.如果我们需要兼容,我 ...

  3. 2.5. Integer 16 、Integer 32、Integer 64(Core Data 应用程序实践指南)

    Core Data 使用 “带符号的整数”,通常我们会选择Integer 32,如果不够,可以升级为Integer 64 (第3章),通过升级托管对象模型. 这三种类型对应的特性(Property)类 ...

  4. main函数执行前、后再执行的代码

    一.main结束 不代表整个进程结束  (1)全局对象的构造函数会在main 函数之前执行,          全局对象的析构函数会在main函数之后执行:          用atexit注册的函数 ...

  5. 在Unity3D中实现安卓平台的本地通知推送

    [前言] 对于手游来说,什么时候需要推送呢?玩过一些带体力限制的游戏就会发现,我的体力在恢复满后,手机会收到一个通知告诉我体力已完全恢复了.这类通知通常是由本地的客户端发起的,没有经过服务端. 在安卓 ...

  6. jQuery trigger one用法

    jQuery trigger one用法: <%@ page language="java" import="java.util.*" pageEncod ...

  7. MVC 怎么把string字符串转译成html格式

    Views层下:

  8. iOS-如何使用symbolicatecrash

    iOS-如何使用symbolicatecrash 如何使用symbolicatecrash工具分析iOS Crash文件: 原文地址:[iOS Crash文件分析]-如何使用symbolicatecr ...

  9. 用虚拟 router 连通 subnet - 每天5分钟玩转 OpenStack(141)

    Neutron Routing 服务提供跨 subnet 互联互通的能力.例如前面我们搭建了实验环境: cirros-vm1      172.16.100.3        vlan100 cirr ...

  10. Hadoop学习笔记-001-CentOS_6.5_64_连接外网设置

    参考:http://blog.csdn.net/u010270403/article/details/51444677 虚拟机中共五个centos系统,每个系统有两个用户root和hadoop:cdh ...