Php主动deactive与复选框

时间:2015-06-30 09:33:13

标签: php arrays list

我有包含多个复选框的表单。系统功能的每个复选框。

我希望将所有系统功能列为复选框,然后选中'已选中'属性是活动功能。所以这里没问题。但我希望如果未经检查的活动功能,此功能会使其失效。如果选中了deactive功能,则会激活。

但我不知道如何区分之前选择的。

我写作代码;

    function generate_menu($parent)
{
    $has_childs = false;
    global $activeModule;
    global $actives;
    global $menu_array;
    foreach($menu_array as $key => $value)
    {
        if ($value['cat'] == $parent) 
        {              
            if ($has_childs === false)
            {                        
                $has_childs = true;
                echo '<ul id="categories" style="list-style:none;">';
            } 
            echo '<li><label><input name="module[]" type="checkbox" '.(($value['check'])?'checked':'').' value="'.$value['id'].'"> ' . $value['modulename'] .'</label>';
            generate_menu($key); 
            echo '</li>';
        }
    }
    if ($has_childs === true) 
        echo '</ul>';

}

此代码的结果

enter image description here

保存当前选中的内容;

$success = Array();
            foreach($_POST['module'] as $key=>$val)
            {
                $db->where('lisansID', $_POST['licence']);
                $db->where('modulID', $val);
                if(!$db->has('moduleactivation'))
                {
                    if($db->insert('moduleactivation', Array(
                        'lisansID'      =>  $_POST['licence'],
                        'modulID'       =>  $val,
                        'start'         =>  $_POST['start'],
                        'end'           =>  $_POST['end'],
                        'activatedate'  =>  $_POST['adate']
                    )))
                    {
                        $result['relocation']   =   'asd.php';
                        $success[]              =    $val;
                        $result['msg']          =   'Success Process, add module of licence.';
                        $result['code']         =   '200';

                    }
                    else
                    {
                        $error = true;
                        break;
                    }
                }
                else
                {

                    $unique     = true;
                    $uniqueR[]  = $val;
                }

如何检测未选中的复选框以及数据库中是否有删除?

1 个答案:

答案 0 :(得分:0)

正如您所知,PHP只会在$_POST中收到复选框中的值。检查未经检查的&#39;在框中,您必须遍历已知复选框列表并在$_POST中检查该变量名称。幸运的是,您已在$menu_array中列出了此列表:

foreach ($menu_array as $varName => $varValue)
{
    if (array_key_present($varName,$_POST)===TRUE) // Has it been selected?
    {
        echo "{$varName} is checked".PHP_EOL;
        /*
         * Do your activation bit here
         */
    } else
    {
        echo "{$varName} is unchecked".PHP_EOL
        /*
         * Do your deactivation bit here
         */
    }
}