• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
钗的php生涯
博客园    首页    新随笔    联系   管理    订阅  订阅
实现商品秒杀 时间倒计时
秒杀功能实现主要分以下几步1.实现登录调到展示页面,并在此时调用模型层分配秒杀时间;2.展示秒杀页面,设置点击事件,判断库存,排队人数,成功则秒杀成功3.关于时间倒计时:在js页面调用加载方法,1秒执行一次!!

//此案例为TP5 框架  mvc三层所作!只供参考

//C层 登录成功  调用模型层  

public function login(){
    $name=input("get.name");
    $pwd=input("get.pwd");
    if(empty($name) || empty($pwd)){
        $this->error("账号密码不能为空");
    }
    //实例化模型层
      $res=new Login();
      $list=$res->index($name,$pwd);
      if($list){
          Session::set("name",$list['name']);
          $this->success("登录成功","show");
      }else{
          $this->error("账号或密码错误");
      }
}

 

//m层   进行时间的分配

public function getgoods(){
//查询数据
    $data=$this->select()->toArray();
//循环遍历
    foreach($data as $k =>$v){
        $time=$v['end_time']-time();
        //有效的小时
        $hour=floor($time/3600);
        //有效分钟
        $min=floor(($time-$hour*3600)/60);
        //有效秒
        $second=$time-$hour*3600-$min*60;
        //合并到原数组
        $data[$k]['hour']=$hour;
        $data[$k]['min']=$min;
        $data[$k]['second']=$second;
    }
    return $data;
}
//根据id查询库存
public function cun($id){
     return $this->where('id',$id)->find()->toArray();
}



//登录成功跳到展示页面   显示秒杀剩余时间
public function show(){
    $goods=new Goods();
    $data=$goods->getgoods();
  //  print_r($data);
    return view("show",['data'=>$data]);
}

 

V层展示秒杀页面

{foreach name="data" id="v"}
  <ul style="list-style-type: none;border: 2px red solid;margin-top: 15px;width: 400px">
      <li>名称:{$v['name']}</li>
      <li>价格:{$v['price']}</li>
      <li>库存:{$v['count']}</li>
      <li><span id="{$v['id']}">活动剩余时间:{$v['hour']}小时{$v['min']}分钟{$v['second']}秒</span></li>
      <input type="button" value="立即秒杀" class="but" id="{$v.id}">
  </ul>
{/foreach}

 

(js方法)
//获取id跳动 c层,判断商品库存,排队人数
$(".but").click(function () {
    var sid=$(this).attr("id");
   $.get(
       "{:url('chart/show_do')}?id="+sid,
       function (data) {
            if(data==1){
               alert("商品已卖完!!!");
            }else if(data==2){
               alert("请您稍后,正在排队中");
            }else{
               alert("秒杀成功,请下单");
               location.href="{:url('chart/goods')}";
           }
       }
   )
})

 


、

//实现每秒执行一次 ,实现秒杀倒计时

$(document).ready(function () {
    window.setInterval(function () {
        var sp=$("#sp").val();
         $.get(
             "{:url('chart/datajson')}",
             function (data) {
                 var res=JSON.parse(data)
                 $.each(res,function (k,v) {
                    var str='';
                     str += "活动剩余时间:"+v.hour+"时"+v.min+"分"+v.second+"秒";
                     $("#"+v.id).text(str);
                 })
             })
    },1000)
 

 

posted on 2018-12-20 19:46  php钗  阅读(1355)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3