试图阻止循环覆盖以前存储的值

时间:2015-10-26 15:59:49

标签: php codeigniter

我有一个表格,用户可以选择哪个角色可以访问哪种形式,即:

--------- canView canAdd canEdit canDelete

form1 chkbox chkbox chkbox chkbox

form2 chkbox chkbox chkbox chkbox

当使用复选框时,我注意到只有被检查的复选框在我发布表单时才会发送它们的值。所以我决定在每个复选框中发送每个表单ID的值。

当我提交表单时,我的复选框值以数组形式发送。对于每个选中的复选框,我都会提交一个用于插入数据库的ID值。以下是我的代码:

<input type="checkbox" name="chkCanView[]" value="<?php echo $fId;?>"/>
<input type="checkbox" name="chkCanAdd[]" value="<?php echo $fId;?>"/>
<input type="checkbox" name="chkCanEdit[]" value="<?php echo $fId;?>"/>
<input type="checkbox" name="chkCanDelete[]" value="<?php echo $fId;?>"/>

$canView = $this->input->post('chkCanView');
$canAdd = $this->input->post('chkCanAdd');
$canEdit = $this->input->post('chkCanEdit');
$canDelete = $this->input->post('chkCanDelete');

for($i = 0; $i < count($forms); $i++)
        {
            $curForm = $forms[$i];
            for($j = 0; $j < count($forms); $j++)
            {
                $curView[$j] = (($canView[$j] == $curForm)?1:0);
                $curAdd[$j] = (($canAdd[$j] == $curForm)?1:0);
                $curEdit[$j] = (($canEdit[$j] == $curForm)?1:0);
                $curDelete[$j] = (($canDelete[$j] == $curForm)?1:0);
            }//for              
        }//for
//insert into DB
for($c = 0; $c < count($forms); $c++)
        {               
            $curForm = $forms[$c];
            $data= $this->db->query("select formAccessLevelKey from          FormAccessLevel where formId = $curForm")->row();
            $formKey = $data->formAccessLevelKey;           
            if(empty($formKey))
            {
                $this->db->query("uspFormAccessLevelCRUD NULL, $curForm, $roleId, $curView[$c], $curAdd[$c], $curEdit[$c], $curDelete[$c], '$sessionId', 'NULL' ,0");   
            }
            else
            {
                $this->db->query("uspFormAccessLevelCRUD '$formKey', $curForm, $roleId, $curView[$c],$curAdd[$c], $curEdit[$c], $curDelete[$c], 'NULL', '$sessionId',0");
            }
        }//for  

我想要做的是获取复选框的id值并将其与当前表单ID进行比较。如果它相同,那么我将1保存为要传递给数据库的变量。如果不一样的话我保存0

似乎每次我通过外部for循环它都会覆盖以前保存的值。如果已检查的索引中已存储1个,我希望能够跳过。

1 个答案:

答案 0 :(得分:0)

使用

if (value == true) {
continue
}

如果值存在则继续意味着跳过它而不做任何事情