简体   繁体   English

使用php在mysql数据库中保存复选框值

[英]Save Check box value in mysql database using php

i make a for in which i put multiple check boxes and now i want to save each selected checkbox value in database but i get only array text in database... this is my form code... 我在其中放置了多个复选框,现在我想将每个选定的复选框值保存在数据库中,但是我在数据库中仅得到数组文本...这是我的表单代码...

<?php session_start();
include '../includes/layouts/header.php';


// Check, if username session is NOT set then this page will jump to login page
if (!isset($_SESSION['admin']))
{
    header('Location:signin.php');
}

?>


<div id="main">
    <div id="navigation" >
        <ul class="nav">
            <li><a href="selected_user.php">Users Statistics</a></li>
            <li><a href="message.php">Post New Anousment</a></li>
            <li><a href="#">Messages</a>
                <ul>
                    <li><a href="#">Inbox</a></li>
                    <li><a href="#">Outbox</a></li>

                </ul>
            </li>
            <li><a href="#">Setting</a>
                <ul>
                    <li><a href="subadmin.php">Add Sub Admin</a></li>
                    <li><a href="#">Update Records</a></li>
                    <li><a href="del.php">Delete Records</a></li>
                </ul>

            </li>
            <li><a href="logout.php">Logout</a></li>
        </ul>
        &nbsp;
    </div>
    <div id="page">

        <h2>Admin Menu</h2>
        <p>Welcome to Admin Area</p>

        <form action="subad.php" method="post">
            <label for="">Admin Name</label><br>
            <input type="text" name="admin_name" value=""/><br>
            <label for="">Admin Password</label><br>
            <input type="password" name="admin_password" value=""/><br><br>
            <label for="">Select Rights For Admin</label><br><br>
            <input type="checkbox" value="track user" name="chk[]"/>
            <label for="">Manage/Track User's</label><br>
            <input type="checkbox" name="chk[]" value=""/>
            <label for="">Delete User's</label><br>
            <input type="checkbox" name="anoucments" value=""/>
            <label for="">Post New Anousment's</label><br>
            <input type="checkbox" name="areject" value=""/>
            <label for="">Accept/Reject User Application</label><br><br>
            <input type="submit" name="add" value="Add Admin"/>
        </form>
        <?php
        if(isset($_SESSION['success']))
        {
            echo $_SESSION['success'];
            unset($_SESSION['success']);
        }
        ?>
    </div>
</div>
<?php include '../includes/layouts/footer.php' ?>

and this is my database.php code 这是我的database.php代码

<?php session_start();
include 'conn.php';
$admin=$_POST['admin_name'];
$password=$_POST['admin_password'];
$track=$_POST['chk'];
    for ($i=0; $i<sizeof($track);$i++) {
        $sql="INSERT INTO sub_admin(Admin_Name,Password,Track_User)VALUES('$admin','$password','$track')";
        $res=mysql_query($sql);
        if($res)
        {
            $_SESSION['success']="Sub-Admin is successfuly added!";
            header("location:subadmin.php");
        }
        else
        {
            echo mysql_error();
        }
    }


?>

can any one tell me that what is the reason? 谁能告诉我原因是什么? i want to store the check box text in the form of true or false, because in my database i made individual column for each checkbox. 我想以true或false的形式存储复选框文本,因为在我的数据库中,我为每个复选框创建了单独的列。

and also can any one tell me that how to make a subadmin by super admin and assign them a limited rights? 还有谁能告诉我如何由超级管理员组成一个子管理员并为其分配有限的权限? any idea or web link? 任何想法或网站链接?

Try doing 尝试做

$track = json_encode($_POST["chk"]);

This is the quickest solution because your database does not match the checkboxes. 这是最快的解决方案,因为您的数据库与复选框不匹配。 However, if the database were designed with each checkbox as a column, you could save true or false in each of them. 但是,如果数据库的每个复选框都设计为一列,则可以在每个复选框中保存true或false。

To fetch the array of data from the database 从数据库中获取数据数组

$data = mysql_result($ret, 0, "Track_User");
$track = json_decode($data, true);

You are currently setting $track equal to the entire array $_POST['chk'] . 当前,您将$track设置$track等于整个数组$_POST['chk']

As jetawe suggested in the comments you need to run $track[$i] as the value for the Track_User column. 正如jetawe在注释中建议的那样,您需要运行$track[$i]作为Track_User列的值。

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

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