ajax、PHP、session做购物车
购物车网页代码
1.登录界面login.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="../jquery-1.11.2.min.js"></script>
<title>无标题文档</title>
</head> <body>
<div>用户名:<input type="text" id="uid" /></div>
<div>密码:<input type="text" id="pwd" /></div>
<input type="button" value="登录" id="btn" />
</body>
<script type="text/javascript">
$("#btn").click(function(){
var uid = $("#uid").val();
var pwd = $("#pwd").val();
$.ajax({
url:"loginchuli.php",
data:{u:uid,p:pwd},
type:"POST",
dataType:"TEXT",
success: function(data){
if(data.trim()=="OK")
{
window.location.href="main.php";
}
else
{
alert("用户名或密码错误");
}
}
})
})
</script>
</html>
2.登录处理页面loginchuli.php
<?php
session_start(); include("../DBDA.class.php");
$db = new DBDA();
$uid = $_POST["u"];
$pwd = $_POST["p"];
$sql = "select password from login where username='{$uid}'";
$mm = $db->StrQuery($sql);
if($mm==$pwd && $pwd!="")
{
$UserName = $_POST["uid"];
$_SESSION["uid"]=$uid;
echo "OK";
}
else
{
echo "NO";
}
3.主页面main.php
<?php
session_start();
include("../DBDA.class.php");
$db = new DBDA();
?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title><br />
<style type="text/css">
.list{ width:100%; height:30px; margin-top:10px; text-align:center; line-height:30px; vertical-align:middle}
</style>
</head>
<body>
<div style="width:100%; height:100px; background-color:#6CC">
<h1 style="float:left">大苹果商城</h1>
<a style="float:right; margin-top:40px" href="zhuxiao.php">注销</a>
</div>
<br />
<div style="width:100%; height:600px">
<div id="left" style="width:20%; float:left">
<a href="main.php"><div class="list">浏览商品</div></a>
<a href="zhanghu.php"><div class="list">查看账户</div></a>
<a href="gouwuche.php"><div class="list">查看购物车</div></a>
</div> <div id="right" style="width:80%; float:left"> <?php
$agwc = array();
if(!empty($_SESSION["gwc"]))
{
$agwc = $_SESSION["gwc"];
}
$zhonglei = count($agwc);
$sum = 0;
foreach($agwc as $v)
{
$sql = "select price from fruit where ids='{$v[0]}'";
$danjia = $db->StrQuery($sql);
$sum = $sum +$danjia*$v[1];
}
echo "<div>购物车中有:{$zhonglei}种商品,总价格为:{$sum}元.</div>";
?> <table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>代号</td>
<td>水果名称</td>
<td>水果价格</td>
<td>源产地</td>
<td>库存量</td>
<td>操作</td>
</tr> <?php
$sql = "select * from fruit";
$attr = $db->Query($sql); foreach($attr 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='goumai.php?code={$v[0]}'>购买</a></td></tr>";
}
?> </table>
</div>
</div> </body>
</html>
4.购买处理页面goumai.php
<?php
session_start();
$code = $_GET["code"]; if(empty($_SESSION["gwc"]))
{
//第一次点击购买
$attr = array(
array($code,1)
);
$_SESSION["gwc"] = $attr;
}
else
{
//不是第一次点击购买
$attr = $_SESSION["gwc"];
$bs=0;
foreach($attr as $k=>$v)
{
if($v[0]==$code)
{
$bs=1;
$attr[$k][1] = $attr[$k][1]+1;
}
}
//如果没有在数组里面出现
if($bs==0)
{
$shuzu = array($code,1);
$attr[] = $shuzu;
} $_SESSION["gwc"]=$attr; }
header("location:main.php");
5.订单处理页面,计算选取水果的总价,和水果剩余量。dingdan.php
<?php
session_start();
include("../DBDA.class.php");
$db = new DBDA();
$uid = $_SESSION["uid"];
$attr = array();
if(!empty($_SESSION["gwc"]))
{
$attr = $_SESSION["gwc"];
}
//看下两个条件是否都满足
$bs = true; //判断余额是否满足
//根据用户名找余额
$syue = "select account from login where username='{$uid}'";
$yue = $db->StrQuery($syue); //根据购物车数组取总金额
$sum = 0;
foreach($attr as $v)
{
$sql = "select price from fruit where ids='{$v[0]}'";
$danjia = $db->StrQuery($sql);
$sum = $sum +$danjia*$v[1];
}
if($yue<$sum)
{
$bs = false;
echo "YEBUZU";
exit;
} //判断库存是否满足 foreach($attr as $v)
{
$skucun = "select name,numbers from fruit where ids='{$v[0]}'";
$akucun = $db->Query($skucun);
if($akucun[0][1]<$v[1])
{
$bs = false;
echo "{$akucun[0][0]}库存不足!";
exit; }
} //添加订单,减库存,减余额 if($bs)
{
//减库存
foreach($attr as $v)
{
$sql = "update fruit set numbers = numbers-{$v[1]} where ids='{$v[0]}'";
$db->Query($sql,0);
} //减余额
$jianyue="update login set account=account-{$sum} where username='{$uid}'";
$db->Query($jianyue,0); //添加订单
$dingdanhao = $uid+date("YmdHis");
$t = time(); $sorder = "insert into orders values('{$dingdanhao}','{$uid}','{$t}')";
$db->Query($sorder,0); foreach($attr as $v)
{
$sxq = "insert into orderdetails values('','{$dingdanhao}','{$v[0]}','{$v[1]}')";
$db->Query($sxq,0);
}
} echo "OK";
6.购物车页面
<?php
session_start();
?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title><br />
<style type="text/css">
.list{ width:100%; height:30px; margin-top:10px; text-align:center; line-height:30px; vertical-align:middle}
</style>
<script src="../../jquery-1.11.2.min.js"></script>
</head> <body>
<div style="width:100%; height:100px; background-color:#6CC">
<h1 style="float:left">大苹果商城</h1>
<a style="float:right; margin-top:40px" href="zhuxiao.php">注销</a>
</div>
<br />
<div style="width:100%; height:600px">
<div id="left" style="width:20%; float:left">
<a href="main.php"><div class="list">浏览商品</div></a>
<a href="zhanghu.php"><div class="list">查看账户</div></a>
<a href="gouwuche.php"><div class="list">查看购物车</div></a>
</div> <div id="right" style="width:80%; float:left">
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>商品名称</td>
<td>商品单价</td>
<td>购买数量</td>
<td>操作</td>
</tr> <?php
include("../DBDA.class.php");
$db = new DBDA();
$attr=array();
if(!empty($_SESSION["gwc"]))
{
$attr = $_SESSION["gwc"];
} foreach($attr as $k=>$v)
{
$sql = "select name,price from fruit where ids='{$v[0]}'";
$ashuiguo = $db->Query($sql); echo "<tr><td>{$ashuiguo[0][0]}</td><td>{$ashuiguo[0][1]}</td><td>{$v[1]}</td><td><a href='shanchu.php?sy={$k}'>删除</a></td></tr>"; } ?> </table>
<div id="tj">提交订单</div><div id="ts"></div>
</div>
</div> <script type="text/javascript">
$("#tj").click(function(){
$.ajax({
url:"dingdan.php",
dataType:"TEXT",
success: function(data){
if(data.trim()=="OK")
{
alert("购买成功");
}
else if(data.trim()=="YEBUZU")
{
$("#ts").html("余额不足");
$("#ts").css("color","red");
}
else
{
$("#ts").html(data);
$("#ts").css("color","red");
}
}
});
})
</script>
</body>
</html>
7.购物车页面删除处理页面shanchu.php
<?php
session_start(); $sy = $_GET["sy"]; $attr = $_SESSION["gwc"]; if($attr[$sy][1]>1)
{
$attr[$sy][1] = $attr[$sy][1]-1;
}
else
{
unset($attr[$sy]);
$attr = array_values($attr);
}
$_SESSION["gwc"]=$attr; header("location:gouwuche.php"); 8.账户余额页面zhanghu.php <?php
session_start();
$uid = $_SESSION['uid'];
?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title><br />
<style type="text/css">
.list{ width:100%; height:30px; margin-top:10px; text-align:center; line-height:30px; vertical-align:middle}
</style>
</head>
<body>
<div style="width:100%; height:100px; background-color:#6CC">
<h1 style="float:left">大苹果商城</h1>
<a style="float:right; margin-top:40px" href="zhuxiao.php">注销</a>
</div>
<br />
<div style="width:100%; height:600px">
<div id="left" style="width:20%; float:left">
<a href="main.php"><div class="list">浏览商品</div></a>
<a href="zhanghu.php"><div class="list">查看账户</div></a>
<a href="gouwuche.php"><div class="list">查看购物车</div></a>
</div>
<div id="right" style="width:80%; height:150px; float:left"> <?php
include("../DBDA.class.php");
$db = new DBDA();
$sql = "select Account from login where UserName='{$uid}'";
$result = $db->strQuery($sql); echo ("您的账户中还剩余".$result);
?> </div>
</div> </body>
</html>
ajax、PHP、session做购物车的更多相关文章
- AJAX安全-Session做Token
个人思路,请大神看到了指点 个人理解token是防止扫号机或者恶意注册.恶意发表灌水,有些JS写的token算法,也会被抓出来被利用,个人感觉还是用会过期的Session做token更好,服务器存储, ...
- 11月14日用AJAX、PHP、SESSION做购物车
购物车网页代码 1.登录界面login.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- 用ajax、PHP、session做购物车
购物车网页代码 1.登录界面login.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- html5与js关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的value点击全选状态onclick="select();"。做购物车页面时会要用到。
关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的点击全选状态onclick="s ...
- 处理jquery的ajax请求session过期跳转到登录页面
首先需要在拦截器中判断是否是ajax请求,如果是 if(isAjaxRequest(request)){//ajax请求 response.setHeader("sessionstatus& ...
- vue做购物车
写一点废话,昨天敲代码找bug,找了好久都没找到,后来一哥们找到他说,找代码的bug就像男女朋友吵架,女问男你错了没,男说错啦,女再问错哪了,男傻眼了不知道错哪.在找代码的过程中一直知道我错啦就是找不 ...
- 会话技术之Session(购物车加入、查看和清空)
会话技术之Session session:服务器端会话技术 当我们第一次访问的服务器的时候,服务器获取id, 能获取id 要拿着这个id去服务器中查找有无此session 若查找到了:直接拿过来将数据 ...
- Django中数据传输编码格式、ajax发送json数据、ajax发送文件、django序列化组件、ajax结合sweetalert做二次弹窗、批量增加数据
前后端传输数据的编码格式(contentType) 提交post请求的两种方式: form表单 ajax请求 前后端传输数据的编码格式 urlencoded formdata(form表单里的) ja ...
- session实现购物车
为实现简单的购物功能(购物车添加.账户查看.购物车商品删除.实时的购物商品数量及价格的计算显示.购物车商品数量可手动输入等),用session实现了一简单的以php语言为基础.连接MySQL数据库的购 ...
随机推荐
- 使用Java POI来选择提取Word文档中的表格信息
通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事 ...
- poj3264线段数求最大最小值
链接:https://vjudge.net/contest/66989#problem/G 完完全全的水题,还是被坑了,一个return忘了写,de了半天bug!! #include<iostr ...
- ubuntu系统搭建以太坊私有链
1.安装curl.git apt-get update apt-get install git apt-get install curl 2.安装go curl -O https://storage. ...
- 用Python设计一个经典小游戏
这是关于Python的第9篇文章,介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习 ...
- 如何应对苹果app 的ipv6 时代?腾讯专家教您进行环境改造
WeTest 导读 WWDC2015苹果宣布在ios9支持纯IPv6的网络服务,并且要求2016年提交到app store的应用必须兼容纯IPv6的网络,要求适配的系统版本是ios9以上(包括ios9 ...
- [刷题]ACM/ICPC 2016北京赛站网络赛 第1题 第3题
第一次玩ACM...有点小紧张小兴奋.这题目好难啊,只是网赛就这么难...只把最简单的两题做出来了. 题目1: 代码: //#define _ACM_ #include<iostream> ...
- 升讯威微信营销系统开发实践:(5) Github 源码:微信接口的 .NET 封装。
微信开发系列教程,将以一个实际的微信平台项目为案例,深入浅出的讲解微信开发.应用各环节的实现方案和技术细节. 本系列教程的最终目标是完成一个功能完善并达到高可用性能指标的微信管理软件,所以除了与微信本 ...
- javascript之深入剖析this
this的重要性不言而喻,比如面试题经常考到,其次,如果彻底理解了this,那么对理解框架源码及编写高质量代码都有很大的帮助.本文就是要深入剖析this的几种情况,理解了原理,以后妈妈再也不用担心你的 ...
- 使用FileSystem自带的api读取hdfs中的文件
博客搬家自https://my.oschina.net/itsyizu/blog/ 1. 创建hadoop MapReduce项目 输入项目名称 创建好的项目初始化状态如下 编写java类 impor ...
- Day4-迭代器
for循环的数据类型: 1.集合数据类型,如list列表,tuple元组,dict字典,set集合,str字符串等: 2.generator生成器,包括生成器和带yield的generator fun ...