如图
现在选中权限之后提交了我该怎么获取所选中的值呢
由于设置了自动选择效果(选择顶级权限,子权限自动全选,选择其中一个子权限,顶级权限自动选中)
每一组权限的name都不一样
所以后台该如何获取所选择的值呢

解决方案 »

  1.   

    js. 点击后循环给勾选的部分名字 name='xxxx'+i
    这样有name 的check才会提交到你后台 然后判断一下value.
      

  2.   


    比如说市场渠道那一组的name都是check1[]
    学员管理那一组name是check2[]
    后台如何循环获取这个页面传递过来的所有checkbox组呢
      

  3.   

    这样循环foreach($_POST['check1'] as $checkItem)
    {
         //$checkItem 就是你的值了。
        //其实你可以吧 $_POST['check1'] 当做普通数组处理
    }下面那个 check2 也是这样也可以。
      

  4.   

    把所有的组都判断一次。这个是基于你的组是固定的。如果不固定,可以使用 foreach($_POST ) 来遍历
      

  5.   

    foreach($_POST['check1'] as $Key => $checkItem)

        //这样的话可以吧 $Key 值也获取了,方便你做更多的判断。
    }上面那个市场渠道,你一般可以用这种,但是下面那个,你如果直接命名 name 为 [],不好知道哪个是哪个,也可以你直接指定 name,譬如说<input name="check6[1]"...
    <input name="check6[2]"...
    <input name="check6[3]"...甚至:<input name="check6[aa]"...
    <input name="check6[bb]"...
    <input name="check6[cc]"...同样, $_POST['check6'] 也是数组,里面有 check6['aa']、check6['bb'] 等,也可以用 foreach 遍历 $_POST['check6']
      

  6.   

    Sorry楼上最后一句话是这样的:同样, $_POST['check6'] 也是数组,里面有 $_POST['check6']['aa']、$_POST['check6']['bb'] 等,也可以用 foreach 遍历 $_POST['check6']
      

  7.   


    按照这种写法似乎我需要写很多froeach ,页面上权限菜单可能没办法确定,是否有更灵活的方法?
      

  8.   

    有办法。foreach($_POST as $postItem)
    {
         foreach($postItem as $postSubItem)
         {
               //$postSubItem 这个就是你需要的了
         }
    }当然这个是简写,是个思路,看是否是你需要的。
    遍历$_POST所有的,然后再遍历check数据数组。当然,你可以加以判断 $postItem 是否是数组,若是,再 foreach,这样就写两个 foreach 就好了。
      

  9.   

    首先非常感谢你的热心帮助这是foreach($_POST as $postItem){}获取到的值,后面选中的子菜单值是数组,进行二次遍历的时候报错
    不知道能否写个小实例看看。
      

  10.   


    首先非常感谢你的热心帮助这是foreach($_POST as $postItem){}获取到的值,后面选中的子菜单值是数组,进行二次遍历的时候报错
    不知道能否写个小实例看看。
      

  11.   

    如果权限菜单数量不确定  可以用我这个方法
    首先要保证权限的checkbox 命名统一性 看代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <form id="form1" name="form1" method="post" action="post.php">
    <input name="check1[0]" type="checkbox" value="check1 value1" />check1 value1<br />
    <input name="check1[1]" type="checkbox" value="check1 value2" />check1 value2<br />
    <input name="check1[2]" type="checkbox" value="check1 value3" />check1 value3<br />
    <input name="check2[0]" type="checkbox" value="check2 value1" />check2 value1<br />
    <input name="check2[1]" type="checkbox" value="check2 value2" />check2 value2<br />
    <input name="check2[2]" type="checkbox" value="check2 value3" />check2 value3<br />
    <input name="check3[0]" type="checkbox" value="check3 value1" />check3 value1<br />
    <input name="check3[1]" type="checkbox" value="check3 value2" />check3 value2<br />
    <input name="check3[2]" type="checkbox" value="check3 value3" />check3 value3<br />
    <input name="wtf[]" type="checkbox" value="ooxx" />ooxx<br />
    <input name="wtf[]" type="checkbox" value="xxoo" />xxoo<br />
    <input name="wtf[]" type="checkbox" value="oxox" />oxox<br />
      <input type="submit" value="提交" />
    </form>
    </body>
    </html><?php 
    foreach ($_POST as $postitem=>$postvalue)
    {
    if(stripos($postitem,"check")!==false)
        {
            foreach($_POST[$postitem] as $key => $value)
            {
             echo $postitem."=>".$key."=>".$value.PHP_EOL;
            }
        }}
    ?>
      

  12.   

    给你个测试地址  尽快 一会儿就删了
    http://www.chinaltesummit.com/apps/x.html
      

  13.   

    你说的这个是属于前台的功能了 用JS就可以实现,这种js代码很多的。
      

  14.   

    嗯 这个选择功能是前台的
    我测试过 需要做组选择的话可能区分一下name 所以后台获取值有点不太方便 function check_Child(obj,cName){
    var checkboxs = document.getElementsByName(cName);
     for(var i=0;i<checkboxs.length;i++)
     { checkboxs[i].checked = obj.checked;  
     }
    }
    function check_Parent(obj,cName){

    var checkboxs = document.getElementsByName(cName);
     for(var i=0;i<checkboxs.length;i++)
     {
    checkboxs[i].checked = obj.checked;   
     }
    }
    这是前台的选择代码 调用的时候传递的是name来进行区分
    这样的话所以的name就不一样
    按照你所提供的遍历方法我所能获取到的值只是每一组的最后一个项  如下
    选中项:
    获取的值
      

  15.   

    <input name="check1[0]" type="checkbox" value="check1 value1" />check1 value1<br />
    <input name="check1[1]" type="checkbox" value="check1 value2" />check1 value2<br />
    <input name="check1[2]" type="checkbox" value="check1 value3" />check1 value3<br />
    <input name="check2[0]" type="checkbox" value="check2 value1" />check2 value1<br />
    <input name="check2[1]" type="checkbox" value="check2 value2" />check2 value2<br />
    <input name="check2[2]" type="checkbox" value="check2 value3" />check2 value3<br />
    这里的name 必须是数组 如果不是数组的话 post的时候相同name只取最后一个值。
    js实现的话需要写很多代码 楼主懂Jquery的话方便很多
      

  16.   

    谢谢你的热情帮助<input name="chechp_[1]" type="checkbox" value="1" onclick="check_Child(this,'checkc_[1]')"/>市 场 渠 道 <br />
    <input name="checkc_[1]" type="checkbox" value="10" onclick="check_Parent(this,'chechp_[1]')" />市场渠道1
    <input name="checkc_[1]" type="checkbox" value="11" onclick="check_Parent(this,'chechp_[1]')" />市场渠道2                                               
    <input name="chechp_[2]" type="checkbox" value="2" onclick="check_Child(this,'checkc_[2]')"/>销 售 渠 道
    <input name="checkc_[2]" type="checkbox" value="12" onclick="check_Parent(this,'chechp_[2]')" />销售渠道1
    <input name="chechp_[3]" type="checkbox" value="3" onclick="check_Child(this,'checkc_[3]')"/>学 员 管 理
    <input name="checkc_[3]" type="checkbox" value="13" onclick="check_Parent(this,'chechp_[3]')" />学员管理1
    <input name="checkc_[3]" type="checkbox" value="14" onclick="check_Parent(this,'chechp_[3]')" />学员管理2
    <input name="checkc_[3]" type="checkbox" value="15" onclick="check_Parent(this,'chechp_[3]')" />学员管理3
    这种形似的命名应该没错误吧?由于要实现JS功能所以采用了checkc跟checkp进行区分,对于jquery不是很了解。
      

  17.   

    命名错了
    check1[0]
    check1[1]
    check1[2]  这是一组check2[0]
    check2[1]
    check2[2]  这是一组
      

  18.   

    非常感谢你的热心帮助
    表单代码如下                        <form action="AddLimits.php" method="post" name="role">
                             &nbsp;用户组:<select name="role" id="role">
                             <?
    while($rs=mysql_fetch_array($row)){
    ?>
                            <option value="<?=$rs['Id']?>"><?=$rs['RoleName']?></option> 
                            <?
    }
                            ?>
                            </select>&nbsp;<input type="submit" value="分配权限" class="input" /><br />
                            <?
    $sqlSelectRole="select Id,MenuName,Pid from menu where Pid=0";
    $row=mysql_query($sqlSelectRole);
    while($rs=mysql_fetch_array($row)){
    ?>
                             <input name="chechp_[<?=$rs["Id"]?>]" type="checkbox" value="<?=$rs["Id"]?>" onclick="check_Child(this,'checkc_[<?=$rs["Id"]?>]')"/><?=$rs["MenuName"]?><br />
                            <?
    //查询子权限菜单
    $sqlC="select Id,MenuName,Pid from menu where Pid=".$rs["Id"]."";
    $rowC=mysql_query($sqlC);
    while($rsC=mysql_fetch_array($rowC)){
    ?>
                                     &nbsp;&nbsp;<input name="checkc_[<?=$rs["Id"]?>]" type="checkbox" value="<?=$rsC["Id"]?>" onclick="check_Parent(this,'chechp_[<?=$rsC["Pid"]?>]')" /><?=$rsC["MenuName"]?>&nbsp;
                            <?
    }
    echo "<br /><br />";
                            ?>
                            <?
    }
                            ?>
                            </form>
    脚本代码如下
    function check_Child(obj,cName){
    var checkboxs = document.getElementsByName(cName);
     for(var i=0;i<checkboxs.length;i++)
     { checkboxs[i].checked = obj.checked;  
     }
    }
    function check_Parent(obj,cName){

    var checkboxs = document.getElementsByName(cName);
     for(var i=0;i<checkboxs.length;i++)
     {
    checkboxs[i].checked = obj.checked;   
     }
    }
      

  19.   

    JS写好麻烦 我拿Jquery简单写了一个http://www.chinaltesummit.com/apps/xx.html
      

  20.   

    非常感谢futurecs的热情帮组 要的就是这个效果 呵呵 辛苦啦 也谢谢其它朋友 分数不多 忘见谅