栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

ThinkPHP5+jQuery+MySql实现投票功能

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ThinkPHP5+jQuery+MySql实现投票功能

ThinkPHP5+jQuery+MySql实现投票功能,先给大家展示下效果图,如果大家感觉效果不错,请参考实例代码。

效果图:

前端代码:





基于THINKPHP5实现红蓝投票功能

  .vote{width:288px; height:300px; margin:40px auto;position:relative}
  .votetitle{width:100%;height:62px; background:url(/static/index/images/icon.png) no-repeat 0 30px; font-size:15px}
  .red{position:absolute; left:0; top:64px; height:80px;}
  .blue{position:absolute; right:0; top:64px; height:80px;}
  .red p,.blue p{line-height:22px}
  .redhand{position:absolute; left:0;width:36px; height:36px; background:url(/static/index/images/icon.png) no-repeat -1px -38px;cursor:pointer}
  .bluehand{position:absolute; right:0;width:36px; height:36px; background:url(/static/index/images/icon.png) no-repeat -41px -38px;cursor:pointer}
  .grayhand{width:34px; height:34px; background:url(/static/index/images/icon.png) no-repeat -83px -38px;cursor:pointer}
  .redbar{position:absolute; left:42px; margin-top:8px;}
  .bluebar{position:absolute; right:42px; margin-top:8px; }
  .redbar span{display:block; height:6px; background:red; width:100%;border-radius:4px;}
  .bluebar span{display:block; height:6px; background:#09f; width:100%;border-radius:4px; position:absolute; right:0}
  .redbar p{line-height:20px; color:red;}
  .bluebar p{line-height:20px; color:#09f; text-align:right; margin-top:6px}






  

ThinkPHP5+jQuery+MySql实现红蓝投票功能 您对Thinkphp5的看法?

非常实用

完全不懂

控制器:

fetch();
  }
  
  public function Vote()
  {
    $data = input('post.');
    if (!empty($data)) {
      $data['ip'] = get_ip();  //获取Ip
      // 先检测当前ip是否已经投过票
      $count = model('Vote')->checkIp($data);
      // 检测是否提交了type,提交了即代表点击了按钮,没提交即代表页面初次渲染
      if (!empty($data['type'])) {
 if ($count == '0') {  //当前还未投过票 
   // 更新票数 添加用户ip表
   $res = model('Vote')->postVote($data);
   if ($res) {
     // 投票成功 获取当前各自的票数
     $info = $this->getPercent($data);
     return return_succ($info);
   }else{
     return return_error('投票失败');
   }
 }else{
   // 已经投过票
   return return_error('您已经投过票了');
 }
      }else{
 // 初次渲染,获取初始数据
 $info = $this->getPercent($data);
 return return_succ($info);
      }
    }else{
      return return_error('数据不能为空');
    }
  }
  // 计算比例
  public function getPercent($data)
  {
    // 投票成功 获取当前各自的票数
    $info = model('Vote')->getInfo($data);
    // 计算比例 保留3位小数
    $info['red_percent'] = round($info['rednum'] / ($info['rednum'] + $info['bluenum']),3);
    $info['blue_percent'] = 1 - $info['red_percent'];
    return $info;
  }
}

模型:

where(['vid'=>$data['vid'],'ip'=>$data['ip']])->count();
    return $res;
  }
  // 投票
  public function postVote($data)
  {
    $info = $this->getInfo($data);
    if ($info) {
      Db::startTrans();
      try {
 if ($data['type'] == "red") {
   // 更新票数表 
   Db::table('votes')->where(['id'=>$data['vid']])->update(['rednum'=>$info['rednum']+1]);
 }elseif ($data['type'] == "blue") {
   Db::table('votes')->where(['id'=>$data['vid']])->update(['bluenum'=>$info['bluenum']+1]);
 }
 // 添加用户投票ip
 Db::table('votes_ip')->insert(['vid'=>$data['vid'],'ip'=>$data['ip']]);
 Db::commit();
 return true;
      } catch (Exception $e) {
 Db::rollback();
 return false;
      }
    }
  }
  // 获取当前各自的票数
  public function getInfo($data)
  {
    // 获取各自的票数
    $info = Db::table('votes')->where(['id'=>$data['vid']])->find();
    return $info;
  }
}

总结

以上所述是小编给大家介绍的ThinkPHP5+jQuery+MySql实现投票功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/38473.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号