问答项目---提问按钮如何做!

本文介绍了一种使用PHP处理分类数据并结合AJAX动态加载二级和三级分类的方法。通过示例代码展示了如何实现分类的选择与显示,同时介绍了如何在用户选择不同分类时动态更新界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

处理:PHP处理显示一级分类,通过AJAX显示二级/三级分类:

处理示例:PHP

<?php
namespace Home\Controller;
use Think\Controller;
class AskController extends CommonController {
    public function index(){
        $cate = M('category')->where(array('pid'=>0))->select();
        $this->assign('cate',$cate);
        // 分配金币
        if(isset($_SESSION['uid']) && isset($_SESSION['username'])){
            if($point = M('user')->where(array('id'=>session('uid')))->getField('point')){
                $this->assign('point',$point);
            };
        }
        $this->display();
    }
    //异步提取子分类
    public function getCate($pid){
        if(!IS_AJAX){$this->error('页面不存在');}        
        $pid = intval($pid);
        $where = array(
            'pid' => $pid
        );
        if($cate = M('category')->where($where)->select()){
            echo json_encode($cate);
        }else{
            echo 0;
        };
    }
    // 接受表单数据
    public function send(){
        $data = array(
            'content' => I('post.content'),
            'reward' => I('post.reward'),
            'cid' => I('post.cid','','intval'),
            'time' => time(),
            'uid' => session('uid')
        );
        //插入数据
        if(M('ask')->add($data)){
            //对该提问者 提问数量及经验和金币加一
            $where = array('id'=>session('uid'));
            $db = M('user');
            $db->where($where)->setInc('ask'); //加提问数量
            $db->where($where)->setInc('exp',C('LV_ASK')); //加经验
            redirect(U('Member/index',array('id'=>session('uid'))));
        }else{
            $this->error('插入失败');
        };
    }
}

HTML示例:

<div class='sel'>
    <p>为您的问题选择一个合适的分类:</p>
    <select name="cate-one" size='16'>                
        <foreach name='cate' item="v">
            <option value="{$v.id}">{$v.name}</option>
        </foreach>
        </select>
    <select name="cate-one" size='16' class='hidden'></select>
    <select name="cate-one" size='16' class='hidden'></select>
</div>

JS示例:

<script type="text/javascript">
var getCate = "{:U('getCate')}";
var on = false;
var point = 0;
// 处理如果登陆,on为ture,没有登陆 on为false
<if condition="isset($_SESSION['uid']) && isset($_SESSION['username'])"> on = true;
  // 登陆之后获取用户金币 point
= "{$point}"; </if> </script> <script type="text/javascript"> var cateID = 0; $("select[name='cate-one']").change(function(){ var obj = $(this); //只有三个 0 1 2 select if(obj.index()<3){ var pid = obj.val(); $.getJSON(getCate,{pid:pid},function(data){ if(data){ var option = ''; $.each(data,function(i,k){ option += "<option value='"+k.id+"'>"+k.name+"</option>"; }); obj.next().html(option).show(); } },'json'); } cateID = obj.val(); }); $('#ok').click(function(){ if(!cateID){ alert('请选择一个分类'); return; } $("input[name='cid']").val(cateID); // 隐藏框 $('.close-window').click(); }); $('input.send-btn').click(function(){ var cons = $('textarea[name=content]'); if(cons.val() == ''){ alert('请输入内容'); cons.focus(); return false; }; if(!cateId){ alert('请选择一个分类'); return false; } // 如果没有登陆,弹出登陆框 if(!on){ $('.login').click(); return false; } }); var opt = $("select[name='reward'] option"); for(var i=0; i<opt.length; ++i){ if(opt.eq(i).val() > parseInt(point)){ opt.eq(i).attr('disabled','disabled'); } } </script>

金币可选处理:

JS示例:

<script>
var opt = $("select[name='reward'] option");
for(var i=0; i<opt.length; ++i){
    if(opt.eq(i).val() > parseInt(point)){
        opt.eq(i).attr('disabled','disabled');
    }
}
</script>

 

转载于:https://www.cnblogs.com/e0yu/p/7455334.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值