网上常见的简单投票代码

在网上我们经常能看到投票,本文就是介绍一个简单的投票如何做。

1:代码变量介绍

    $vote:题干实体。

    $options:选项集合。

2:前台部分代码及注释

//题干
<p class="c_6d f14 ti2">
    <?php if(count($vote) > 0 && $vote=$vote[0]):?>
        <?php echo mb_substr($vote['name'], 0, 55, 'utf8');?>
    <?php endif;?>
</p>
//操作选项
<form id="voteForm">
    <table cellpadding="0" cellspacing="0">
        <?php foreach ($options as $v):?>
        <tr>
            <td width="15">
                //判断题是单选还是多选 注意name的值:'option[]',value的值:是选项的编号
                <input name='option[]' value="<?php echo $v['id'];?>" type="<?php echo $vote['type'] == 1 ? 'radio':'checkbox'?>" />
            </td>
            <td width="200">
                //选项文本
                <a title="<?php echo $v['name'];?>" target="_blank" href="javascript:void(0)" class="f14">
                    <?php echo mb_substr($v['name'], 0, 17, 'utf8');?>
                </a>
            </td>
            <td width="50" class="tr">
                <span class="c_6d">
                    //得到的票数 注意span的命名方式 用'score'+选项的编号
                    <span id="score<?php echo $v['id'];?>"><?php echo $v['count'];?></span>票
                </span>
            </td>
        </tr> 
        <?php endforeach;?>
        <tr>
            <td colspan="3" height="40">
                <input id="voteBtn" name="submit" type="button" class="button_tp" value="" /> 
                <input id="voteReset" type="reset" style="display:none" />
            </td>
        </tr>
    </table>
</form>
<script type="text/javascript">
    $(function(){
        $("#voteBtn").click(function(){
            var flag = false;//标记是否选择了选项
            var form = $("#voteForm");//form表单对象
            var options = form.find("input[name='option[]']");//选项集合
            //如果用户选择了投票选项 把flag设置true 退出循环
            $(options).each(function(i){
                if($(this).attr('checked') == 'checked'){
                    flag = true;
                    return false;
                }
            });
            if(!flag){
                alert('请选择投票选项');
                return false;
            }
            jj.ajax(
                "<?php echo site_url() . '?c=newsc&m=vote'?>",
                form.serialize(),
                function(data){
                    //后台返回的数据格式是 [{'id':1},{'id':2}] 是用户投的选项的编号的集合
                    var ids = eval('(' + data + ')');
                    //处理前台投票选项得到得票数
                    $(ids).each(function(i){
                        var id = $(this).attr('id');
                        var score = $("#score" + id);
                        var oldScore = parseInt(score.html(), 10);
                        score.html(oldScore + 1);
                    });
                    $("#voteReset").click();
                    alert('投票成功');
                }
            );
        });
    });
</script>

3:后台代码及注释

public function vote(){
    $options = $_POST['option'];//取投的选项的编号集合
    //更新选项所得票数 并拼写出[{'id':1},{'id':2}]这样的字符串
    $msg = '[';
    for($i=0,$j=count($options); $i<$j; $i++){
        $id = $options[$i];
        $where = array('id' => $id);
        $model = $this->optionm->getModel($where);
        $d['count'] = intval($model['count']) + 1;
        $this->optionm->update($d, $where);
        if($i != $j-1){
            //注意末尾有一个英文的逗号','
            $msg .= '{id:' . $id . '},';
        }else{
            $msg .= '{id:' . $id . '}';
        }
    }
    $msg .= ']';
    echo $msg;
}

本博文只介绍了一个简单的投票,并没有对投票进行过滤(不能重复投票),用户每次投票前判断一下,投票成功以后记录一下ip,这样可以做一个简单的过滤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值