在单个数据库列中插入多个HTML表单复选框值



我正在使用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;
}
?>

当用户选择多个复选框时,只有一个复选框值被添加到数据库列。

我更喜欢ALL复选框值,由用户选择,插入到相同的数据库列。

我在网上找到的所有示例和教程都要求每个复选框都有自己的列。或者不要详细说明如何实现这一点。

我的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);

如果您可以将实际值存储在db.

:

将输入类型名称改为数组类型

<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

最新更新