php - 如何使用 PHP 和 MySQL 在复选框中使用布尔值
问题描述
所以我想弄清楚如何用复选框设置布尔值。
编辑:我需要布尔值保存到我的数据库中,如果选中则为 true,如果在编辑联系人或添加新联系人时未选中则为 false。
我使用 PHP 和 MySQL 处理字符串和整数,但似乎无法弄清楚布尔值(我对 PHP 还是很陌生)。
同样,我知道字符串是这样设置的,但是我会为布尔值添加什么?或者它也只是字符串?我可以将其验证为字符串或整数吗?
mysqli_stmt_bind_param($stmt, 'sssssssss', $gos_bname, $gos_pname, $gos_email, $gos_url, $gos_phone, $gos_address, $gos_city, $gos_province, $gos_desc);
我知道这很多,但这是我到目前为止所拥有的一切。
编辑页面
<?php
include(__DIR__."/includes/db.php");
include(__DIR__."/includes/validate.php");
$conNotFound = true;
$conDetails = [];
$isPostRequest = false;
$isValidForm = false;
$successfulSave = false;
if ($_SERVER['REQUEST_METHOD'] === "GET") {
if (isset($_GET['id'])) {
$con_id = validate_number($_GET['id']);
if ($con_id != false) {
$conDetails = get_con_by_id($con_id);
}
}
} else if ($_SERVER['REQUEST_METHOD'] == "POST") {
$isPostRequest = true;
$gos_bname = "";
$gos_pname = "";
$gos_email = "";
$gos_phone = "";
$gos_url = "";
$gos_address = "";
$gos_city = "";
$gos_province = "";
$gos_description = "";
$gos_checkbox = 1;
$con_id = null;
if (isset($_POST['gos_bname'])
&& isset($_POST['gos_pname'])
&& isset($_POST['gos_email'])
&& isset($_POST['gos_phone'])
&& isset($_POST['gos_url'])
&& isset($_POST['gos_address'])
&& isset($_POST['gos_city'])
&& isset($_POST['gos_province'])
&& isset($_POST['gos_description'])
&& isset($_POST['gos_checkbox'])
&& isset($_POST['con_id'])){
$gos_bname = validate_string($_POST['gos_bname']);
$gos_pname = validate_string($_POST['gos_pname']);
$gos_email = validate_string($_POST['gos_email']);
$gos_phone = validate_string($_POST['gos_phone']);
$gos_url = validate_string($_POST['gos_url']);
$gos_address = validate_string($_POST['gos_address']);
$gos_city = validate_string($_POST['gos_city']);
$gos_province = validate_string($_POST['gos_province']);
$gos_description = validate_string($_POST['gos_description']);
$char_id = validate_number($_POST['char_id']);
if ($gos_bname != false
&& $gos_pname != false
&& $gos_email != false
&& $gos_phone != false
&& $gos_url != false
&& $gos_address != false
&& $gos_city != false
&& $gos_province != false
&& $gos_description != false
&& $gos_checkbox = !false
&& $con_id != false){
$isValidForm = true;
}
}
if ($isValidForm) {
$successfulSave = update_con_by_id($gos_bname, $gos_pname, $gos_email, $gos_url, $gos_phone, $gos_address, $gos_city, $gos_province, $gos_desc, $gos_checkbox, $con_id);
}
}
?>
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<title>Edit Character</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Luckiest+Guy&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Raleway:400,700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/main.css">
</head>
<body>
<header>
<h1>Contacts DB</h1>
<nav class="nav-bar">
<ul class="nav-list">
<li><a href="index.php">Home</a></li>
<li><a href="list.php">Character List</a></li>
<li><a href="insert.php">Add Characters</a></li>
<li><a href="search.php">Search</a></li>
</ul>
</nav>
</header>
<main>
<div class="form-container">
<?php if($conNotFound && $conDetails == [] && !$isPostRequest) {?>
<h2>Contact not found</h2>
<p>Note: this would normally go to a 404</p>
<?php } else if (!$isPostRequest){ ?>
<form method='post' action='<?php echo $_SERVER['PHP_SELF']; ?>'>
<h2>Edit Contact: <?php echo $conDetails['gos_bname']?></h2>
<input type="number"
class="hidden"
name="char_id"
value="<?php echo $con_id?>"
>
<div class="form-group">
<label for="business-name">Business Name:</label>
<input type="text"
class="form-control"
id="business-name"
name="gos_bname"
value="<?php echo $conDetails['gos_bname']?>"
>
</div>
<div class="form-group">
<label for="contact-person">Contact:</label>
<input type="text"
class="form-control"
id="contact-person"
name="gos_pname"
value="<?php echo $conDetails['gos_pname']?>"
>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="text"
class="form-control"
id="email"
name="gos_email"
value="<?php echo $conDetails['gos_email']?>"
>
</div>
<div class="form-group">
<label for="phone">Phone:</label>
<input type="text"
class="form-control"
id="phone"
name="gos_phone"
value="<?php echo $conDetails['gos_phone']?>"
>
</div>
<div class="form-group">
<label for="website">Website</label>
<input type="text"
class="form-control"
id="website"
name="gos_url"
value="<?php echo $conDetails['gos_url']?>"
>
</div>
<div class="form-group">
<label for="address">Address</label>
<input type="text"
class="form-control"
id="address"
name="gos_address"
value="<?php echo $conDetails['gos_address']?>"
>
</div>
<div class="form-group">
<label for="city">City:</label>
<input type="text"
class="form-control"
id="city"
name="gos_city"
value="<?php echo $conDetails['gos_city']?>"
>
</div>
<div class="form-group">
<label for="province">Province:</label>
<input type="text"
class="form-control"
id="province"
name="gos_province"
value="<?php echo $conDetails['gos_province']?>"
>
</div>
<div class="form-group">
<label for="description">Description:</label>
<textarea rows="8" type="text"
class="form-control"
id="description"
name="gos_desc"
value="<?php echo $conDetails['gos_desc']?>">
<?php echo $conDetails['gos_desc']?>
</textarea>
</div>
<div class="form-group">
<label for="sent-resume">Sent Resume To:</label>
<input type="checkbox"
class="form-control"
id="sent-resume"
name="gos_checkbox"
value="<?php echo $conDetails['gos_checkbox']?>"
>
</div>
<button class="submit" type="submit">Edit Contact</button>
</div>
</main>
</body>
</html>
插入页面
<?php
include(__DIR__."/includes/db.php");
include(__DIR__."/includes/validate.php");
$isPostRequest = false;
$isValidForm = false;
$successfulSave = false;
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$isPostRequest = true;
$gos_bname = "";
$gos_pname = "";
$gos_email = "";
$gos_phone = "";
$gos_url = "";
$gos_address = "";
$gos_city = "";
$gos_province = "";
$gos_description = "";
$gos_checkbox = 1;
$con_id = null;
if (isset($_POST['gos_bname'])
&& isset($_POST['gos_pname'])
&& isset($_POST['gos_email'])
&& isset($_POST['gos_phone'])
&& isset($_POST['gos_url'])
&& isset($_POST['gos_address'])
&& isset($_POST['gos_city'])
&& isset($_POST['gos_province'])
&& isset($_POST['gos_description'])
&& isset($_POST['gos_checkbox'])
&& isset($_POST['con_id'])){
$gos_bname = validate_string($_POST['gos_bname']);
$gos_pname = validate_string($_POST['gos_pname']);
$gos_email = validate_string($_POST['gos_email']);
$gos_phone = validate_string($_POST['gos_phone']);
$gos_url = validate_string($_POST['gos_url']);
$gos_address = validate_string($_POST['gos_address']);
$gos_city = validate_string($_POST['gos_city']);
$gos_province = validate_string($_POST['gos_province']);
$gos_description = validate_string($_POST['gos_description']);
$char_id = validate_number($_POST['char_id']);
if ($gos_bname != false
&& $gos_pname != false
&& $gos_email != false
&& $gos_phone != false
&& $gos_url != false
&& $gos_address != false
&& $gos_city != false
&& $gos_province != false
&& $gos_description != false
&& $gos_checkbox = !false
&& $con_id != false){
$isValidForm = true;
}
}
if ($isValidForm) {
$successfulSave = insert_new_con($gos_bname, $gos_pname, $gos_email, $gos_url, $gos_phone, $gos_address, $gos_city, $gos_province, $gos_desc, $gos_checkbox);
}
}
?>
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<title>Add a Character</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Luckiest+Guy&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Raleway:400,700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/main.css">
</head>
<body>
<header>
<h1>Contacts DB</h1>
<nav class="nav-bar">
<ul class="nav-list">
<li><a href="index.php">Home</a></li>
<li><a href="list.php">Character List</a></li>
<li><a href="insert.php">Add Characters</a></li>
<li><a href="search.php">Search</a></li>
</ul>
</nav>
</header>
<main>
<div class="form-container">
<?php if (!$isPostRequest){ ?>
<form method='post' action='<?php echo $_SERVER['PHP_SELF']; ?>'>
<h2>Add a new Contact</h2>
<div class="form-group">
<label for="business-name">Business Name:</label>
<input type="text"
class="form-control"
id="business-name"
name="gos_bname"
>
</div>
<div class="form-group">
<label for="contact-person">Contact:</label>
<input type="text"
class="form-control"
id="contact-person"
name="gos_pname"
>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="text"
class="form-control"
id="email"
name="gos_email"
>
</div>
<div class="form-group">
<label for="phone">Phone:</label>
<input type="text"
class="form-control"
id="phone"
name="gos_phone"
>
</div>
<div class="form-group">
<label for="website">Website</label>
<input type="text"
class="form-control"
id="website"
name="gos_url"
>
</div>
<div class="form-group">
<label for="address">Address</label>
<input type="text"
class="form-control"
id="address"
name="gos_address"
>
</div>
<div class="form-group">
<label for="city">City:</label>
<input type="text"
class="form-control"
id="city"
name="gos_city"
>
</div>
<div class="form-group">
<label for="province">Province:</label>
<input type="text"
class="form-control"
id="province"
name="gos_province"
>
</div>
<div class="form-group">
<label for="description">Description:</label>
<textarea rows="8" type="text"
class="form-control"
id="description"
name="gos_desc"
>
</textarea>
</div>
<div class="form-group">
<label for="sent-resume">Sent Resume To:</label>
<input type="checkbox"
class="form-control"
id="sent-resume"
name="gos_checkbox"
>
</div>
<button class="submit" type="submit">Submit</button>
</form>
<?php } else { ?>
<h2 class="form-submitted">Submitted Contact</h2>
<div>
<?php if ($successfulSave) {
echo "<p class=\"success\">Contact successfully added</p>";
} else {
echo "<p class=\"edit-error\">ERROR:<br/> Unable to add contact<br/>
Please make sure all fields are filled out properly!</p>";
}?>
</div>
<?php }?>
</div>
</main>
</body>
</html>
验证
<?php
function validate_string($string) {
$string = filter_var($string, FILTER_SANITIZE_STRING);
if ($string == "") {
return false;
}
return $string;
}
function validate_number($number) {
$number = filter_var($number, FILTER_SANITIZE_NUMBER_INT);
$number = filter_var($number, FILTER_VALIDATE_INT);
return $number;
}
解决方案
您可以使用数据类型 ENUM 和值 '1','0' 吗?这可能有助于将 1 指定为真,将 0 指定为假。