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的更多相关文章

  1. 简单租房子实例详解---(session、ajax、json前后台数据处理、分页)

    本次实例我们结合session.ajax.json前后台数据处理.分页技术做一个租房信息系统 一共有五个界面:包括 管理员和用户的登录界面 登录界面的后台 <?php session_start ...

  2. react-router4.x 实用例子(路由过渡动画、代码分割)

    react-router4.2.0实用例子 代码分割 官网上面写的代码分割是不支持create-react-app脚手架的,要使用import实现 创建一个bundle.js文件 import { C ...

  3. 2.django笔记之缓存,session,cookie,ajax

    一.django缓存 1.缓存 缓存的意义在于把昂贵的计算结果保存起来一遍下次的访问,有缓存的站点的流程大概是这样子的: 给定一个url,检查页面是否在缓存中 如果在,返回缓存的页面 否则,生成该页面 ...

  4. 解决spring-security session超时 Ajax 请求没有重定向的问题

    开始时, 代码是这样的: $.ajax({ type : "POST", url : sSource, cache : false, dataType : "json&q ...

  5. python 全栈开发,Day119(Flask初识,Render Redirect HttpResponse,request,模板语言 Jinja2,用户登录例子,内置Session)

    一.Flask初识 首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 三大主流Web框架对比 ...

  6. Django进阶(路由系统、中间件、缓存、Cookie和Session、Ajax发送数据

    路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P&l ...

  7. Python全栈开发之18、cookies、session和ajax等相关知识

    一.cookies 本质为在浏览器端保存的键值对,由服务端写在浏览器端,以后每次请求的时候,浏览器都携带着cookie来访问,cookies的使用之处非常多,比如用户验证,登陆界面,右侧菜单隐藏,控制 ...

  8. django之cookie、session和ajax

    1 Cookie cookie是什么? 保存在客户端浏览器上的键值对   {k:v} cookie依附在请求头或响应头中出现 发送请求时,会自动携带自己网站的cookie 应用: 实现登录 投票 1. ...

  9. log4j.xml的实用例子

    大多数讲log4j配置的教程用的都是log4j.properties文件,我觉得xml或许更好一点,在这里我提供一个我已经用于生产环境的log4j.xml的例子,先上代码,然后再解释: <?xm ...

随机推荐

  1. C++基础——函数指针 函数指针数组

    ==================================声明================================== 本文版权归作者所有. 本文原创,转载必须在正文中显要地注明 ...

  2. Android开发究竟用什么工具,Eclipse||AS

    所谓公欲善其事必先利器,那就让我们来看一下android的开发工具吧,安卓的开发工具有Eclipse和Android Studio,另外还有IntelliJ IDEA,可能很多人并不知道. 首先看一下 ...

  3. 【C++】输入多行数字到数组

    前天做某公司笔试题的时候,其输入格式是多行数字,每行以空格为分隔符,以换行符号为结束输入到多个数组.在JAVA中有相应的函数直接将一行拆成数组,感觉在C++中这中输入方式还是挺奇怪的,今天想出一种解决 ...

  4. ES5 的 setter 和 getter

    有两种方式使用 setter 和 getter 1. set/get var person = { _name: '', get name() { return this._name }, set n ...

  5. 浅谈Service层为何要有接口

    被人随意问了一句,为何每个service层都要写一个接口呢,多麻烦~虽然想说点什么,但是又不知道从何说起,只好从新整理一下思绪. 情景1:在开源框架中有很多这种情况,就是某个功能支持用户自定义扩展.说 ...

  6. MongoDB学习笔记(二:入门环境配置及与关系型数据库区别总结)

    一.下载及安装MongoDB MongoDB下载官网链接:http://www.mongodb.org/downloads 具体安装步骤教程:http://www.shouce.ren/api/vie ...

  7. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  8. POJ2406Power Strings[KMP 失配函数]

    Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 45005   Accepted: 18792 D ...

  9. Properties类读取配置文件

    package com.wzy.t4; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFound ...

  10. IdentityHashMap类:增加相同Key(键)内容的结果

    正常Map操作中,key是不能重复的. 先看使用HashMap()操作,增加相同Key内容的结果: 先看代码: package 类集; import java.util.HashMap; import ...