繁体   English   中英

多个复选框检查数据库中的值?

[英]multiple checkbox check if value in database?

码:

<?php
    $id = $_GET['id'];
    $sql = "select * from admin_menu where id = '$id'";
    $result = mysqli_query($link,$sql);
    while ($row = mysqli_fetch_array($result)) 
    {
        $menu_name = $row['menu_name'];
        $menu_link = $row['menu_link'];
        $priority = $row['priority'];
        $admin_id = explode(",", $row['admin_id']);
    }
    if(isset($_POST['update']))
    {
        $admin_id = $_POST['admin_id'];
        $chk=""; 
        foreach($admin_id as $chk1)  
        {  
            $chk .= $chk1.",";  
        } 
        $menu_name = $_POST['menu_name'];
        $menu_link = $_POST['menu_link'];
        $priority = $_POST['priority'];
        $sql = "update admin_menu set menu_name = '$menu_name', menu_link = '$menu_link', priority = '$priority', admin_id = '$chk' where id = '$id'";
        $result = mysqli_query($link,$sql);
        if($result == true)
        {
            $msg .= "<h3 style='color:green;'>update</h3>";
        }
        else
        {
            $msg .= "<h3 style='color:red;'>Error!</h3>";   
        }
    }   
?>
<form name="myform" method="post" >
        <div class="row">
            <label for="Producer_firstname">Admin Name</label> 
            <?php
                foreach ($admin_id as $admin_id) 
                {
                    $chk = "";
                    if (in_array($chk, $admin_id)) 
                    {
                        $chk = 'checked="checked" ';
                    }
                    echo '<input type="checkbox" name="admin_id[]" value="'.$admin_id.'" '.$chk.'/><br/>';
                }
            ?>    
        </div>

        <div class="row">
            <label for="Producer_firstname">Menu Name </label>      
            <input size="60" maxlength="255" name="menu_name" id="menu_name" value="<?php echo $menu_name; ?>" type="text" />           
        </div>

        <div class="row">
            <label for="Producer_lastname" >Menu Link </label>      
            <input size="60" maxlength="255" name="menu_link" id="menu_link"  type="text" value="<?php echo $menu_link; ?>" />          
        </div>

        <div class="row">
            <label for="Producer_lastname" >Priority</label>        
            <select name="priority" id="priority">
                <option value="<?php echo $priority; ?>"><?php echo $priority; ?></option>
                <option value="">choose any one</option>
                <option value="1">1</option>
                <option value="0">0</option>
            </select>   
        </div>

        <div class="row buttons">
            <button type="submit" name='update' id='update'>update Menu</button>
        </div>
    </form>

在这段代码中,我正在从表admin2中获取多个复选框的值,并且我想在更新表单值复选框时检查复选框的值是否存在于数据库中。 我该如何解决?

谢谢

您的代码几乎没有问题,
1.更新应在选择查询之前完成
2.管理员列表未单独管理
3.优先单选按钮管理不当

其他建议,
1.使用准备查询语句
2.使用implode附加多个值而不是foreach
3.在复选框前打印管理员名称

<?php
    $id = $_GET['id'];
    if(isset($_POST['update']))
    {
        $chk = implode(',', $_POST['admin_id']);
        $menu_name = $_POST['menu_name'];
        $menu_link = $_POST['menu_link'];
        $priority = $_POST['priority'];
        $sql = "update admin_menu set menu_name = '$menu_name', menu_link = '$menu_link', priority = '$priority', admin_id = '$chk' where id = '$id'";
        $result = mysqli_query($link,$sql);
        $msg = "";
        if($result == true)
        {
            $msg .= "<h3 style='color:green;'>update</h3>";
        }
        else
        {
            $msg .= "<h3 style='color:red;'>Error!</h3>";   
        }
        echo $msg;
    }

    $sql = "select * from admin_menu where id = '$id'";
    $result = mysqli_query($link,$sql);
    $row = mysqli_fetch_array($result);
    $menu_name = $row['menu_name'];
    $menu_link = $row['menu_link'];
    $priority = $row['priority'];
    $admin_id = explode(",", $row['admin_id']);
    $admins = array('admin1', 'admin2', 'admin3', 'admin4', 'admin5', 'admin6', 'admin7', 'admin8');
?>

<form name="myform" method="post" >
    <div class="row">
        <label for="Producer_firstname">Admin Name</label>
        <?php
            foreach ($admins as $admin) 
            {
                $chk = "";
                if (in_array($admin, $admin_id)) 
                {
                    $chk = 'checked="checked" ';
                }
                echo $admin.' <input type="checkbox" name="admin_id[]" value="'.$admin.'" '.$chk.'/><br/>';
            }
        ?>    
    </div>

    <div class="row">
        <label for="Producer_firstname">Menu Name </label>      
        <input size="60" maxlength="255" name="menu_name" id="menu_name" value="<?php echo $menu_name; ?>" type="text" />           
    </div>

    <div class="row">
        <label for="Producer_lastname" >Menu Link </label>      
        <input size="60" maxlength="255" name="menu_link" id="menu_link"  type="text" value="<?php echo $menu_link; ?>" />          
    </div>

    <div class="row">
        <label for="Producer_lastname" >Priority</label>        
        <select name="priority" id="priority">
            <option value="1" <?php if($priority == 1) echo "selected='selected'"; ?>>1</option>
            <option value="0" <?php if($priority == 0) echo "selected='selected'"; ?>>0</option>
        </select>   
    </div>

    <div class="row buttons">
        <button type="submit" name='update' id='update'>update Menu</button>
    </div>
</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM