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

时间:2014-04-27 06:43:55

标签: php mysql

我制作一个for,其中我放了多个复选框,现在我想在数据库中保存每个选中的复选框值,但我只获得数据库中的数组文本... 这是我的表格代码......

<?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' ?>

这是我的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();
        }
    }


?>

任何人都可以告诉我这是什么原因?我想以true或false的形式存储复选框文本,因为在我的数据库中,我为每个复选框创建了单独的列。

并且任何人都可以告诉我如何由超级管理员制作subadmin并为他们分配有限的权限?任何想法或网络链接?

2 个答案:

答案 0 :(得分:0)

尝试

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

这是最快的解决方案,因为您的数据库与复选框不匹配。但是,如果数据库的设计时每个复选框都是一列,则可以在每个复选框中保存true或false。

从数据库中获取数据数组

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

答案 1 :(得分:0)

您目前将$track设置为等于整个数组$_POST['chk']

正如jetawe在评论中建议的那样,您需要运行$track[$i]作为Track_User列的值。