我如何使用HTML复选框插入1或0到mysql布尔


how do i use HTML checkbox to insert 1 or 0 into mysql boolean

我试图创建一个分配的注册表,但我有困难,因为我必须允许管理权限,所以我决定在我的表中创建一个名为管理员的列,作为布尔值true或false。在我的注册表,我希望使用一个复选框,如果它被选中,他们是一个管理员,如果不是,那么他们不是。

我如何使复选框= 1或0到mysql语句?

以下是注册代码:

     <form method="POST" action="new-user 2.php">
             <td>Full Name</td><td>
             <input type="text" name="name"></td>
            </tr> 
            <tr>
             <td>Email</td>
             <td> 
             <input type="text" name="email"></td> 
             </tr> 
             <tr>
            <td>UserName</td>
            <td> 
            <input type="text" name="user">
            </td> </tr> 
            <tr> 
            <td>Password</td>
            <td> 
            <input type="password" name="pass">
            </td>
            </tr> 
            <tr>
            <td>Confirm Password </td>
            <td><input type="password" name="cpass">
            </td> 
            </tr> 
            </tr> 
            <tr>
            <td>Administrator </td>
            <td><input type="checkbox" name="cbox" />
            </td> 
            </tr> 
            <tr> 
            <td>
            <input id="button" type="submit" name="submit" value="Register">
            </td> 
            </tr> 
        </form>
    </table>
    </fieldset>
    </div> 
    </div>
</body>
</html>
<?php
if(isset($_POST['cbox']))
{
    $administrator ='1';
}
else
{
    $administrator ='0';
}
?>

谢谢

更新:

新的user2.php代码如下:

require_once('connection.php');
function NewUser() 
{ 
#$salt = 'sadfh9832asd34rf28asjvddap';
#$crypt = crypt ($salt .$password);
    $fullname = $_POST['name'];
    $userName = $_POST['user'];
    $email = $_POST['email'];
    $administrator =$_POST['administrator'];
    #$password = crypt($_POST['pass']);
        $password = md5($_POST['pass']);
        echo "<hr>".$_POST['pass'] . "=[$password]<hr>";
    #$password = stripslashes($password); 
    #$password = mysql_real_escape_string($password);
    $query = "INSERT INTO `WebsiteUsers`(`fullname`, `userName`, `email`, `pass`, `administrator`)  VALUES ('$fullname','$userName','$email','$password', 'administrator')"; 
    $data = mysql_query ($query)or die(mysql_error()); 
        echo "<hr>$query<hr>";
    if($data) 
    { 
    echo "YOUR REGISTRATION IS COMPLETED..."; 
    } 
}
 function SignUp() 
 { 
     if(!empty($_POST['user'])) //checking the 'user' name which is from Sign-Up.html, is it empty or have some text
     { $query = mysql_query("SELECT * FROM WebsiteUsers WHERE userName = '$_POST[user]' 
     AND pass = '$_POST[pass]'") or die(mysql_error());
     if(!$row = mysql_fetch_array($query) or die(mysql_error())) 
     { 
     newuser(); 
     } 
     else
     { 
     echo "SORRY...YOU ARE ALREADY A REGISTERED USER..."; }
     } 
} 
if(isset($_POST['submit']))
{ 
     SignUp(); 
} 
#header("location:index.html");
 ?>
<?php
$cookie_name = "cookieuser";
$cookie_value = $fullname;
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>

为复选框指定一个值

<input type="checkbox" name="cbox" value="1" />

然后检查该值是否像这样分配给$_POST变量。

if($_POST['cbox'] == '1')

完整的代码列在下面。我做了一些修改。

     <form method="POST" action="new-user 2.php">
             <td>Full Name</td><td>
             <input type="text" name="name"></td>
            </tr> 
            <tr>
             <td>Email</td>
             <td> 
             <input type="text" name="email"></td> 
             </tr> 
             <tr>
            <td>UserName</td>
            <td> 
            <input type="text" name="user">
            </td> </tr> 
            <tr> 
            <td>Password</td>
            <td> 
            <input type="password" name="pass">
            </td>
            </tr> 
            <tr>
            <td>Confirm Password </td>
            <td><input type="password" name="cpass">
            </td> 
            </tr> 
            </tr> 
            <tr>
            <td>Administrator </td>
            <td><input type="checkbox" name="cbox" value="1" />
            </td> 
            </tr> 
            <tr> 
            <td>
            <input id="button" type="submit" name="submit" value="Register">
            </td> 
            </tr> 
        </form>
    </table>
    </fieldset>
    </div> 
    </div>
</body>
</html>

<?php
if(isset($_POST['cbox']))
{
    if($_POST['cbox'] == '1'){
        $administrator ='1';
    }else{
        $administrator ='0';
    }
}else
{
    $administrator ='0';
}
?>

根据您的表单元素,<form method="POST" action="new-user 2.php">此脚本提交给new-user 2.php。如果这个页面是new-user 2.php,那么$administrator将是10(作为字符串)。

如果此页面不是new-user 2.php,则此检查:

<?php
if(isset($_POST['cbox']))
{
    $administrator ='1';
}
else
{
    $administrator ='0';
}
?>

将不会运行,因为PHP只在页面加载时执行;一旦页面加载,它将不可用。

$_POST['cbox']将具有on的值,或者不设置。

您可以通过输出POST来查看提交的所有值,在提交表单后使用这个print_r($_POST);

如果这是new-user 2.php,那么请将您的问题更新到可以看到$administrator使用的地方。

根据您的更新代码,问题是您正在检查错误的表单元素。您的表单元素是cbox,而不是administrator。您还可以使用此代码进行SQL注入,并使用已弃用的驱动程序mysql_。您应该切换到mysqlipdo

继续你的代码…您的NewUser函数应该更新为:

function NewUser() 
{ 
#$salt = 'sadfh9832asd34rf28asjvddap';
#$crypt = crypt ($salt .$password);
    $fullname = mysql_real_escape_string($_POST['name']);
    $userName = mysql_real_escape_string($_POST['user']);
    $email = mysql_real_escape_string($_POST['email']);
    $administrator = isset($_POST['cbox']) ? 1 : 0;
    #$password = crypt($_POST['pass']);
    $password = md5($_POST['pass']);
    echo "<hr>".$_POST['pass'] . "=[$password]<hr>";
    #$password = stripslashes($password); 
    #$password = mysql_real_escape_string($password);
    $query = "INSERT INTO `WebsiteUsers`(`fullname`, `userName`, `email`, `pass`, `administrator`)  VALUES ('$fullname','$userName','$email','$password', $administrator)"; 
    $data = mysql_query ($query)or die(mysql_error()); 
        echo "<hr>$query<hr>";
    if($data) 
    { 
    echo "YOUR REGISTRATION IS COMPLETED..."; 
    } 
}

注意转义和$administrator = isset($_POST['cbox']) ? 1 : 0;