php 实用例子:购物车 涉及session与ajax
login:
<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>
loginchuli:
<?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!="")
{
$_SESSION["uid"]=$uid;
echo "OK";
}
else
{
echo "NO";
}
main:
<?php
session_start();
include("../DBDA.class.php");
$db = new DBDA();
?>
<style type="text/css">
.list{ width:100%; height:30px; margin-top:10px; text-align:center; line-height:30px; vertical-align:middle}
</style>
<div style="width:100%; height:100px;
<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>
goumai:
<?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");
gouwuche:
<div style="width:100%; height:100px;
<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>
dingdan:
<?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";
shanchu:
<?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");
php 实用例子:购物车 涉及session与ajax的更多相关文章
- 简单租房子实例详解---(session、ajax、json前后台数据处理、分页)
本次实例我们结合session.ajax.json前后台数据处理.分页技术做一个租房信息系统 一共有五个界面:包括 管理员和用户的登录界面 登录界面的后台 <?php session_start ...
- react-router4.x 实用例子(路由过渡动画、代码分割)
react-router4.2.0实用例子 代码分割 官网上面写的代码分割是不支持create-react-app脚手架的,要使用import实现 创建一个bundle.js文件 import { C ...
- 2.django笔记之缓存,session,cookie,ajax
一.django缓存 1.缓存 缓存的意义在于把昂贵的计算结果保存起来一遍下次的访问,有缓存的站点的流程大概是这样子的: 给定一个url,检查页面是否在缓存中 如果在,返回缓存的页面 否则,生成该页面 ...
- 解决spring-security session超时 Ajax 请求没有重定向的问题
开始时, 代码是这样的: $.ajax({ type : "POST", url : sSource, cache : false, dataType : "json&q ...
- python 全栈开发,Day119(Flask初识,Render Redirect HttpResponse,request,模板语言 Jinja2,用户登录例子,内置Session)
一.Flask初识 首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 三大主流Web框架对比 ...
- Django进阶(路由系统、中间件、缓存、Cookie和Session、Ajax发送数据
路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P&l ...
- Python全栈开发之18、cookies、session和ajax等相关知识
一.cookies 本质为在浏览器端保存的键值对,由服务端写在浏览器端,以后每次请求的时候,浏览器都携带着cookie来访问,cookies的使用之处非常多,比如用户验证,登陆界面,右侧菜单隐藏,控制 ...
- django之cookie、session和ajax
1 Cookie cookie是什么? 保存在客户端浏览器上的键值对 {k:v} cookie依附在请求头或响应头中出现 发送请求时,会自动携带自己网站的cookie 应用: 实现登录 投票 1. ...
- log4j.xml的实用例子
大多数讲log4j配置的教程用的都是log4j.properties文件,我觉得xml或许更好一点,在这里我提供一个我已经用于生产环境的log4j.xml的例子,先上代码,然后再解释: <?xm ...
随机推荐
- Linux内核的文件预读readahead
Linux的文件预读readahead,指Linux系统内核将指定文件的某区域预读进页缓存起来,便于接下来对该区域进行读取时,不会因缺页(page fault)而阻塞.因为从内存读取比从磁盘读取要快很 ...
- SQL Server 复制快照执行错误 错误代码 14068
问题描述: 使用基于快照初始化的事务复制,在上次发布的时候,添加项,执行快照agent,报错,错误信息: Error messages:Message: The subscription status ...
- html之长文本框置顶
方法: 在<body> </body>中添加如下代码: <a name="top"></a> <a href="#t ...
- TFS修改项目名称
引言 如何让TFS管理的项目更名后不丢失修改历史记录? 在工作中有时由于前期考虑不足,某个Project的名字在项目开发过程中需要修改以更准备表达它的功能.本文就对此进行抛砖引玉 操作 在Source ...
- Core 开发-Logging 使用NLog
ASP.NET Core 开发-Logging 使用NLog 写日志文件 ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 .NET Core 和 ...
- 【2016-11-3】【坚持学习】【Day18】【我认识的ORM】
我学过或者用过的ORM有几种 EF NHibernate DevExpress xpo (第一家公司用这个,也是很省力的orm,现在已经不记得了.) 今天晚上想找一下有没有轻量级的orm: flue ...
- POJ1740A New Stone Game[组合游戏]
A New Stone Game Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5769 Accepted: 3158 ...
- 洛谷10月月赛Round.1| P3398 仓鼠找sugar[LCA]
题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c) ...
- 第1章 重构,第一个案例(2):分解并重组statement函数
2. 分解并重组statement (1)提炼switch语句到独立函数(amountFor)和注意事项. ①先找出函数内的局部变量和参数:each和thisAmount,前者在switch语句内未被 ...
- Struts2 internationalization(国际化)
1:什么是国际化? 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式.它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素.换言之,应用程序的功 ...