繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM