Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.02.2019, 14:46
Аспирант
Отправить личное сообщение для Alessio18911 Посмотреть профиль Найти все сообщения от Alessio18911
 
Регистрация: 18.06.2017
Сообщений: 87

Не работает условие
Я начинающий в PHP. Есть форма. Если в её поле ввести значение, то этот кусок кода выводит то, что ввели. Но вот если поле пустое, то не выводит ничего, хотя в переменную должно записаться значение "Проверка". Если в разметку подставить $item_name, пишет, что она не определена. Подскажите, что я не так делаю??
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $item_name = $_POST['name'] ?? "Проверка";

    print($item_name);
}
Ответить с цитированием
  #2 (permalink)  
Старый 24.02.2019, 18:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А где вы увидели такой оператор ?? ?
//либо так
$item_name = trim($_POST['name']) ?  trim($_POST['name']) : "Проверка";
//либо так
$item_name = trim($_POST['name']) ?: "Проверка";

Последний раз редактировалось laimas, 24.02.2019 в 18:58.
Ответить с цитированием
  #3 (permalink)  
Старый 25.02.2019, 09:33
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

Сообщение от laimas
где вы увидели такой оператор ?? ?
http://php.net/manual/ru/migration70...ll-coalesce-op
Ответить с цитированием
  #4 (permalink)  
Старый 25.02.2019, 09:38
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

Alessio18911,
Сообщение от Alessio18911
Но вот если поле пустое, то не выводит ничего, хотя в переменную должно записаться значение "Проверка".
Цитата:
Он возвращает первый операнд, если он задан и не равен NULL, а в обратном случае возвращает второй операнд.
У вас в массиве POST есть ключ "name" хранящий пустую строку. Т.к. ключ есть и значение не равно null, то возвращается его значение, т.е. пустая строка.
$item_name = (isset($_POST['name']) and !empty($_POST['name']))?
        $_POST['name']:
        "Проверка";
Ответить с цитированием
  #5 (permalink)  
Старый 25.02.2019, 10:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Семерка, со своими революциями. )

Не надо данные извне проверять на пустоту empty(), один пробел уже не пустая строка. Только предварительно обработав.
Ответить с цитированием
  #6 (permalink)  
Старый 25.02.2019, 19:38
Аспирант
Отправить личное сообщение для Alessio18911 Посмотреть профиль Найти все сообщения от Alessio18911
 
Регистрация: 18.06.2017
Сообщений: 87

Ребята, всем спасибо за быстрые и конкретные ответы!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие при наличии двух совпадений Artur_Hopf Общие вопросы Javascript 8 03.07.2018 11:11
Не работает условие else в функции Bomberman Общие вопросы Javascript 2 12.03.2018 22:22
контент из XMLHttpRequest response с помощью innerHTML не работает m4ybe Events/DOM/Window 9 24.01.2018 14:35
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11