Я сделал форму, в которой вы можете выбрать «30» или «60» или ввести собственное значение.
Когда я отправляю форму после того, как я выбрал, например, «30», она отправит пустое значение в базу данных, потому что поле ввода было пустым.
Как мне сделать так, чтобы он принимал входное значение переключателей, если ввод пуст, но принимал пользовательское значение ввода, если в нем что-то написано
HTML:
<div class = "tid">
<label class = "container"><span class = "tidtekst">30m</span>
<input type = "radio" class = "checked" name = "tid" id = "tid" value = "30">
<span class = "checkmark"></span>
</label>
<label class = "container"><span class = "tidtekst">60m</span>
<input type = "radio" name = "tid" value = "60">
<span class = "checkmark"></span>
</label>
<input type = "text" name = "tid" id = "egentid" placeholder = "Tid">
</div>
Php:
if (@$_POST["submit"] != "") {
$baatnr = @$_POST["baatnr"];
$fornavn = @$_POST["fornavn"];
$etternavn = @$_POST["etternavn"];
$tid = @$_POST["tid"];
$kr = @$_POST["kr"];
}
$sql = "INSERT INTO utleie (utleid, baatnr, fornavn, etternavn, tid, kr)
VALUES ('$utleidtid', '$baatnr', '$fornavn', '$etternavn', '$tid', '$kr')";
Здесь он примет входное значение «tid», но если я ничего не наберу в поле ввода, он ничего не отправит в базу данных.
Имеет смысл :) Но как мне проверить, пуст ли "tid" и есть ли значение "tid-custom"?
PHP имеет функцию с именем пустой или Иссет и использует некоторое управление потоком, например оператор if. Также отключение предупреждений/ошибок/предупреждений в PHP с помощью @ считается плохой практикой.
В идеале вы должны использовать isset или empty для проверки переменной и инициализации со значением по умолчанию. Лучше всего для этого подходит тернарный оператор PHP $baatnr = isset($_POST["baatnr"]) ? $_POST["baatnr"] : NULL в PHP 7 он еще проще $baatnr = $_POST["baatnr"] ?? NULL см. разделы Тернарный оператор и Нулевой оператор объединения
Имейте в виду, что представленный здесь код уязвим для атак с помощью SQL-инъекций, и следует использовать никогда на веб-сайте, где любой может отправить форму.






Пытаться
$_POST['tid']
без @ и простых кавычек ' '
Также проверьте, является ли ваш метод POST в вашей форме HTML method = "POST" и измените имя ввода на другое, например, «tid_result»
@ отключенные уведомления/ошибки/предупреждения ничего не проверяет.
Почему здесь проблема с двойными кавычками?
Вы можете добавить еще один переключатель для представления ввода пользовательского значения и изменить имя ввода текста следующим образом:
HTML
<div class = "tid">
<label class = "container"><span class = "tidtekst">30m</span>
<input type = "radio" class = "checked" name = "tid" id = "tid" value = "30">
<span class = "checkmark"></span>
</label>
<label class = "container"><span class = "tidtekst">60m</span>
<input type = "radio" name = "tid" value = "60">
<span class = "checkmark"></span>
</label>
<label class = "container"><span class = "tidtekst">Custom Value</span>
<input type = "radio" name = "tid" value = "custom">
<span class = "checkmark"></span>
</label>
<input type = "text" name = "tid_custom" id = "egentid" placeholder = "Tid">
</div>
PHP
if (@$_POST["submit"] != "") {
$baatnr = @$_POST["baatnr"];
$fornavn = @$_POST["fornavn"];
$etternavn = @$_POST["etternavn"];
$tid = @$_POST["tid"];
if ($tid == 'custom') {
$tid = @$_POST["tid_custom"];
}
$kr = @$_POST["kr"];
}
Большое спасибо! Мне пришлось удалить переключатель «Пользовательское значение» и изменить $tid == 'custom' на $tid == null, чтобы он работал :)
Измените имя ввода пользовательского значения на другое, например,
tid-custom, при проверке значения ввода, если$_POST['tid']пусто, получите значение$_POST['tid-custom']