Как отправить значение из переключателей в базу данных, если ввод пуст?

Я сделал форму, в которой вы можете выбрать «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-custom, при проверке значения ввода, если $_POST['tid'] пусто, получите значение $_POST['tid-custom']

user1334621 08.03.2019 00:08

Имеет смысл :) Но как мне проверить, пуст ли "tid" и есть ли значение "tid-custom"?

Philip Svenningsen Arnevig 08.03.2019 00:11

PHP имеет функцию с именем пустой или Иссет и использует некоторое управление потоком, например оператор if. Также отключение предупреждений/ошибок/предупреждений в PHP с помощью @ считается плохой практикой.

Raymond Nijland 08.03.2019 00:15

В идеале вы должны использовать isset или empty для проверки переменной и инициализации со значением по умолчанию. Лучше всего для этого подходит тернарный оператор PHP $baatnr = isset($_POST["baatnr"]) ? $_POST["baatnr"] : NULL в PHP 7 он еще проще $baatnr = $_POST["baatnr"] ?? NULL см. разделы Тернарный оператор и Нулевой оператор объединения

Raymond Nijland 08.03.2019 00:22

Имейте в виду, что представленный здесь код уязвим для атак с помощью SQL-инъекций, и следует использовать никогда на веб-сайте, где любой может отправить форму.

Kristopher Ives 08.03.2019 00:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
244
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Пытаться

$_POST['tid']

без @ и простых кавычек ' '

Также проверьте, является ли ваш метод POST в вашей форме HTML method = "POST" и измените имя ввода на другое, например, «tid_result»

@ отключенные уведомления/ошибки/предупреждения ничего не проверяет.
Raymond Nijland 08.03.2019 00:14

Почему здесь проблема с двойными кавычками?

user1334621 08.03.2019 00:18
Ответ принят как подходящий

Вы можете добавить еще один переключатель для представления ввода пользовательского значения и изменить имя ввода текста следующим образом:

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, чтобы он работал :)

Philip Svenningsen Arnevig 08.03.2019 00:38

Другие вопросы по теме