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数据库的购 ...
随机推荐
- [系统启动]Printk与sched_clock_init的一点分析
作者:Younger Liu, 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可. 在分析Linu内核启动的过程中,发现一段"不平常" ...
- 线段树区间更新操作及Lazy思想(详解)
此题题意很好懂: 给你N个数,Q个操作,操作有两种,‘Q a b ’是询问a~b这段数的和,‘C a b c’是把a~b这段数都加上c. 需要用到线段树的,update:成段增减,query:区间求 ...
- 学习java的感受
学习java有一段时间了,发现现在只是才了解java,还在门槛外边. 有时候真感觉这是不是一种外星语言,各种方法各种类各种借口,总是傻傻分不清. 学过的知识过一个星期就开始模糊,有时半夜睡不着的时候 ...
- CentOS编译安装emacs并配置
Liunxs中CentOS系列一向以稳定为目标,然而也会存在版本太旧的问题,emacs就是其中的一个,目前emacs都发行到25.2了,而CentOS上的emacs版本却还是23.1.所以需要下载源代 ...
- python基本运算
环境:python3.x a,b = 60,164 一.算数运算符 操作符 描述 例子 + 加法 a+b = 224 - 减法 a-b = -104 * 乘法 a*b = 9840 / 除(保留小数位 ...
- C#基础知识-基本的流程控制语句(三)
所谓的流程控制就是在程序运行中控制程序的走向,可以通过各种的条件判断执行代码的顺序,有if... if...else.. else...if |switch case...|while... Do.. ...
- chkconfig命令(管理开机自启)
提供了一个简单的命令行工具来维护/etc/rc[0-6].d目录层次结构通过减轻系统管理员的直接操作任务,在这些目录中的许多符号链接.仅是简单的改变了符号链接,而非立即启动或禁止一个服务. 语法: c ...
- spring boot --- 初级体验
Spring boot的介绍我就不多说了,网上可以自己看一下. 它的优点就是:快!适合小白,没有复杂的配置文件. 缺点也很明显:坑有些多, 文档略少,报错有时不知道该如何处理. 下面做个最简单的入门: ...
- CentOS 6.x 本地yum源配置与使用
系统默认已经安装了可使用yum的软件包,所以可以直接配置: # mount /dev/cdrom /mnt 挂载镜像,可以写到配置文件 ...
- FutureTask——另一种闭锁的实现
关于多线程,我们接触对多的,最基础,入门的可能就是实现Runnable接口继承Thead类,因为Java单继承的原因,通常建议是实现Runnable接口.但这种"简单"的线程会带来 ...