dongniuxia8650 2017-03-02 02:16
浏览 67

获取多个复选框值并在jQuery中传递给PHP

I have multiple checkbox below to add user access:

enter image description here

Each module have different ID. But now I confused how to get the checkbox value and then update it using ajax.

Example for:

  • Module Location, I check Create and Edit.
  • Module Department I check Only View

(Have same group ID)

I didn't get the logic how to pass it to ajax and save it to database based on Module ID and Group ID.

Source code:

$.ajax(
{
    url: "loadModule.php",
    type: "POST",
    data:
    {
        groupName: $("#groupName").val()
    },
    dataType: "JSON",
    success: function (jsonStr)
    {
        var len = jsonStr.length;
        for(var i=0; i<len; i++)
        {
            var moduleID = jsonStr[i].moduleID;
            var moduleName = jsonStr[i].moduleName;
            var projectName = jsonStr[i].projectName;
            var groupID = jsonStr[i].groupID;
            var chkModule = jsonStr[i].chkModule;
            var chkEdit = jsonStr[i].chkEdit;

            var tr_str = "<tr id='"+jsonStr[i].moduleID+"'>" +
            "<td>" + projectName + "</td>" +
            "<td>" + moduleName + "</td>" +
            "<td align='center'><input type='checkbox' id='"+jsonStr[i].moduleID+"' name='chk[]' class='chk' value='CREATE'/><input type='hidden' id='groupIDInput' value='"+jsonStr[i].groupID+"'/></td>" +
            "<td align='center'><input type='checkbox' id='"+jsonStr[i].moduleID+"' name='chk[]' class='chk' value='EDIT'/></td>" +
            "<td align='center'><input type='checkbox' id='"+jsonStr[i].moduleID+"' name='chk[]' class='chk' value='VIEW'/></td>" +
            "<td align='center'><input type='checkbox' id='"+jsonStr[i].moduleID+"' name='chk[]' class='chk' value='DELETE'/></td>" +
            "</tr>";
            $('.dataShow2').show();
            $("#tData tbody").append(tr_str);
        }
}

What I want:

  1. Get the checkbox value using ajax
  2. Pass it to PHP to save to database.

JS btnUpdate

$('#btnUpdate').on('click', function()
    {
        var val = [];
        $(':checkbox:checked').each(function(i){
            val[i] = $(this).val();
        });

        var chkCreateInputValue = [];            
        $('input[name^=chkProjectInput]').each(function(){
            chkCreateInputValue.push($(this).val());
        });

        $.ajax(
        {
            url: "updateGroupAccess.php",
            type: "POST",
            data:
            {
                chk: val,
                groupIDInput: $("#groupIDInput").val(),
                chkCreateInputValue: chkCreateInputValue
            },
            dataType: "JSON",
            success: function (jsonStr)
            {
                $("#btnUpdate").attr({disabled: true, value: "Update"}).addClass('btn_inact').removeClass('btn_act');;
            }
        });
    });

and the PHP

if(!empty($_POST['chk']))
            {
                foreach($_POST['chkCreateInputValue'] as $chkCreateInputValue)
                {
                    if(!in_array($chkCreateInputValue, $_POST['chk'])){
                        $del = oci_parse($c1, "DELETE FROM WA_GA_TBL_ACCESSMODULES WHERE MODULEID_FK = '$chkCreateInputValue' AND GROUPID_FK = '$groupIDInput'");
                        oci_execute($del);
                    }
                }

                foreach($_POST['chk'] as $chk)
                {
                    $qChk = oci_parse($c1, "SELECT * FROM WA_GA_TBL_ACCESSMODULES WHERE GROUPID_FK = '$groupIDInput' AND MODULEID_FK IN ('$chk')");
                    oci_execute($qChk);
                    if(oci_fetch($qChk) > 0)
                    {
                        $sql = oci_parse($c1, "UPDATE WA_GA_TBL_ACCESSMODULES SET CHKCREATE = 'Y' WHERE GROUPID_FK = '$groupIDInput' AND MODULEID_FK IN ('$chk')");
                        oci_execute($sql);
                    }
                    else
                    {
                        $date_added = date("d-M-Y H:i:s");

                        $sql = oci_parse($c1, "INSERT INTO WA_GA_TBL_ACCESSMODULES(MODULEID_FK, GROUPID_FK, DATEADDED, ADDEDBY) VALUES('$chk', '$groupIDInput', TO_DATE('$date_added', 'dd-MON-yyyy hh24:mi:ss'), '$getUserID')");
                        oci_execute($sql);
                    }
                }
            }
            else
            {

                foreach($_POST['chkCreateInputValue'] as $chkCreateInputValue)
                {
                    if(!in_array($chkCreateInputValue, $_POST['chk'])){
                        $del = oci_parse($c1, "DELETE FROM WA_GA_TBL_ACCESSMODULES WHERE GROUPID_FK = '$groupIDInput'");
                        oci_execute($del);
                    }
                }
            }
  • 写回答

2条回答 默认 最新

  • dongzhan7909 2017-03-02 02:22
    关注

    I don't really this works fine, but the idea like this may help you:

    <script>
    var data={'CREATE':[],'EDIT':[],'VIEW':[],'EDIT':[]};
    var tmp=document.getElementsByName('chk[]');
    for(var i=0,j=tmp.length;i<j;i++){
        if(tmp[i].checked){
            data[tmp[i].value].push(tmp[i].id);
        }
    }
    
    $.ajax({
        url:'save.php',
        data:{'data':data},
        type:'POST',
        success:function(){
            /*Callback Function*/
        }
    });
    </script>
    
    <?php
    if(isset($_POST['data'])){
        if(count($_POST['data']['CREATE'])){
            /* Do Something */
        }
    
        if(count($_POST['data']['EDIT'])){
            /* Do Something */
        }
    
        if(count($_POST['data']['VIEW'])){
            /* Do Something */
        }
    
        if(count($_POST['data']['EDIT'])){
            /* Do Something */
        }
    }
    ?>
    
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大