Сохранить значение флажка в базе данных - PullRequest
0 голосов
/ 05 октября 2019

Ниже приведен код, который я использую, когда я отправляю опрос, получаю и работаю в режиме, но не передаю / чекбоксы, данные возвращаются в виде «вкл» в таблицу (опрос) базы данных (wdtlabwork), также поле 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();
}

?>

1 Ответ

1 голос
/ 05 октября 2019

Ваши поля ввода не имеют атрибута 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']. Если вы хотите присоединиться к ним ( не рекомендуется ) для сохранения в одном поле в базе данных, вы можете просто использовать implode(',', $_POST['trans']), например:

$trans = implode(',', $_POST['trans']);
$arrive = $_POST['arrive'];
$mode = $_POST['mode'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...