【问题标题】:Store checkbox value in database将复选框值存储在数据库中
【发布时间】:2019-10-06 03:12:17
【问题描述】:

以下是我正在使用的代码,当我提交调查、到达和模式工作但不是 trans/checkboxes 时,数据在表(调查)数据库(wdtlabwork)中返回显示为“on”,该字段也是 trans ,与其他两个模式 n 到达数据库相同,所有字段均为 VARCHAR 类型。抱歉,如果格式不好,我是网站新手。注意:我希望数据以汽车、火车或公共汽车的形式返回,但因为如果用户检查了火车和汽车,我希望数据库显示火车和汽车。

HTML

<section id="content">
<form action="connect.php" method="post">
<div class="col-6 col-s-9">
  <h3>Available Transportation?</h3>
<input id="trans1" type="checkbox" name="trans[]"><label for ="trans1">Car</label>
<input id="trans2" type="checkbox" name="trans[]"><label for ="trans2">Train</label>
<input id="trans3" type="checkbox" name="trans[]"><label for ="trans3">Bus</label>
<h4>How do you intend to arrive at the Hostel?</h4>
<input id="arrive1" type="radio" value="car" name="arrive"><label for="arrive1">Car</label>
<input id="arrive2" type="radio" value="train" name="arrive"><label for="arrive2">Train</label>
<input id="arrive3" type="radio" value="bus" name="arrive"><label for="arrive3">Bus</label>
<h5>Preferred mode of transport?</h5>
<select name="mode">
<option selected hidden value="">Select Option</option>
<option value="car">Car</option>
<option value="train">Train</option>
<option value="bus">Bus</option>

</select><input type="submit" class="btn btn=primary"></div></section>

PHP

<?php
$arrive = $_POST['arrive'];
$trans = $_POST['trans'];
$mode = $_POST['mode'];

$conn = new mysqli('localhost', 'root','','wdtlabwork');


if ($conn->connect_error){
    die('Connection Failed : '.$conn-> connect_error);
}else{
$stmt = $conn->prepare("insert into survey(trans, arrive, mode)
    values(?, ?, ?)");
$stmt->bind_param("sss",$trans, $arrive, $mode);
$stmt->execute();
echo "registration successfully...";
$stmt->close();
$conn->close();
}

?>

【问题讨论】:

  • 分别作为汽车、火车、公共汽车,或者如果用户检查了汽车和火车,则两者都检查,具体取决于用户的输入
  • 在不相关的说明中,您将从启用 mysqli 错误中受益:How to get the error message in MySQLi?
  • @Dharman 'Car' 我把它们改成了上面的例子,仍然通过数据库中的“开启”
  • @Dharman 现在数据库提供了“数组”
  • 好的,但我想查看数据库中的值@Dharman

标签: php html database checkbox


【解决方案1】:

您的输入字段没有value= 属性,因此它们默认为on,如下所述:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#Value

要获取 POST 中的值,您需要指定值,例如:

<input id="trans1" type="checkbox" name="trans[]" value ="car"><label for ="trans1">Car</label>
<input id="trans2" type="checkbox" name="trans[]" value ="train"><label for ="trans2">Train</label>
<input id="trans3" type="checkbox" name="trans[]" value ="bus"><label for ="trans3">Bus</label>

然后在您的 PHP 中,您将收到 $_POST['trans'] 中选定元素的数组。如果您想加入它们 (not recommended) 以保存在数据库的单个字段中,您可以使用 implode(',', $_POST['trans']),例如:

$trans = implode(',', $_POST['trans']);
$arrive = $_POST['arrive'];
$mode = $_POST['mode'];

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多