![](/img/trans.png)
[英]how to insert multiple checkbox values in single column in database using php
[英]Insert multiple HTML form checkbox values in single database column
我正在使用 Bootstrap 4 制作一个 HTML 表单,其中包含三个多项选择题,允许读者使用复选框选择多个答案。
这是表单中一个问题的示例。
<div class="container">
<form action="/survey/insert.php" class="was-validated" method="post">
<div class="form-group">
<legend class="form-check-label" for="tmp-area"><b>Please select the nearest city, town, or area where you have detailed knowledge of roads, trails, and places on public land.</b></legend>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Black Canyon City, Bumblebee, Cortes Junction" />Black Canyon City, Bumblebee, Cortes Junction </label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Bouse, Brenda, Parker" />Bouse, Brenda, Parker </label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Kingman, Lake Havasu City" />Kingman, Lake Havasu City </label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Littlefield, Masquite" />Littlefield, Masquite </label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Arizona Strip, Parashant National Monument" />Arizona Strip, Parashant National Monument</label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Tuscon, Winkelman" />Tuscon, Winkelman </label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Buckeye, Rainbow Valley" />Buckeye, Rainbow Valley </label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Tonto National Forest " />Tonto National Forest </label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Coconino National Forest" />Coconino National Forest </label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Apache Sitgreaves National Forest" />Apache Sitgreaves National Forest </label>
</div>
<div class="form-check">
<label class="form-check-label" for="tmp_area"> <input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area" value="Prescott National Forest" />Prescott National Forest </label>
</div>
</div>
</form>
</div>
这是/survey/insert.php
的示例
<?php
//Database connection
$servername = "localhost";
$username = "user";
$password = "password";
$dbname = "name";
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Taking all values from the form data(input)
$tmp_area = $_REQUEST['tmp_area'];
//Insert form data into table. Set table and columns.
$sql = "INSERT INTO Survey1 (tmp_area) VALUES ('$tmp_area')";
if ($conn->query($sql) === true) {
echo "Your survey has been submitted";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
?>
问题
当用户选择多个复选框时,只会将一个复选框值添加到数据库列中。
我希望将用户选择的所有复选框值插入到同一数据库列中。
我在网上找到的所有示例和教程都要求每个复选框都有自己的列。 或者不要 go 详细说明如何完成此操作。
我对 PHP 的了解有限,如有任何帮助,我们将不胜感激。 :)
将 tmp_area 更改为 tmp_area[]
<div class="form-check">
<label class="form-check-label" for="tmp_area"><input type="checkbox" class="form-check-input" id="tmp_area" name="tmp_area[]" value="Bouse, Brenda, Parker" />Bouse, Brenda, Parker </label>
</div>
插入时
// Taking all values from the form data(input)
$tmp_area= implode(",",$_REQUEST['tmp_area']); // Store this to your database
如果你需要你的 tmp_area,然后使用它再次转换为数组
$tmp_area[] = explode(",",$your_tmp_area);
我会建议另一种方法,如果你可以在数据库中存储真正的价值。
像这样:
将输入类型名称更改为数组类型。
<input type="checkbox" class=".." id=".." name="tmp_area[]" value=".." />
在插入到数据库之前创建数组值。
$tmp_area = ""; // create a variable to store all data
$tmp_area = implode(',',$_REQUEST['tmp_area']); // convert array type to string
当你检索数据时,你可以,
$tmp_area[] = explode(",",$data_tmp_area_replace_here); // convert string data from database to array
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.