RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
                     完全不懂

            
                                              

            
        
   

控制器:

fetch();
    }
    /**
     * 投票
     * @param vid type ip
     */
    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如何实现投票功能”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


网页标题:ThinkPHP5+jQuery+MySql如何实现投票功能
本文路径:http://jxjierui.cn/article/jicise.html
Top