2017-02-06 2 views
0

Я создаю форму PHP для RSVP, и я пытаюсь объявить несколько переменных $ _POST для 1 isset, но я продолжаю получать ошибки в своем коде, это то, что я пытаюсь делать:PHP множественная декларация Isset

$attendance = isset($_POST['template-contactform-event']) ? $_POST['template-contactform-event'] : ''; 

    $guestname1 = isset($_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r']) ? $_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'] : ''; 

Так что моя ошибка происходит на второй декларации строки $ guestname1 Я думаю, что его из-за второй коме после IsSet, но я не знаю, как я бы заявить об этом? Первая строка ($ attendance) - это то, что я пытаюсь достичь, но с двумя переменными $ _POST для 1.

+0

Какое ваше сообщение? Кроме того, постарайтесь не использовать тройную во время отладки, вы всегда можете написать тройку позже – fpietka

ответ

2

В то время как isset() может принимать несколько параметров, inline iif() не может.

Попробуйте это вместо этого, я объединил два параметра.

<?php 

$attendance = isset($_POST['template-contactform-event']) ? $_POST['template-contactform-event'] : ''; 

$guestname1 = isset($_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r']) ? 
       $_POST['template-contactform-guestname1'].' '.$_POST['template-contactform-guestname1r'] : ''; 
+0

Спасибо за вашу помощь, это сработало для меня! Предоставление этого, как указано в качестве примера, было предоставлено, что работает. – BoneStarr

2

Первое заявление является правильным. Но второй имеет ошибку со второй запятой.

Если вы посмотрите путь тройной должны быть построено:

$val = my_test?result_if_true:result_if_false;

Вы можете сделать isset($_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r']), потому что он будет возвращать логическое значение.

Но не пишите: $_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'] имеет второй аргумент. Потому что тернар не ожидает этой запятой.

Если вы хотите больше информации, я нашел эту статью https://davidwalsh.name/php-shorthand-if-else-ternary-operators

+0

Спасибо за это +! – BoneStarr

1

Вы назначая 2 значения одной переменной, которая не работает, вам придется использовать массив.

А также Исеть() не способ проверить, если пользователь вводят значения в форму, потому что если пользователь отправляет пустая форма, то isset($_POST['smth']) возвращает истину, поскольку индексы присутствуют в суперглобальном $_POST и его значение установлено на пустую строку. Вместо этого используйте empty() и массив для хранения 2 значений.

+0

Спасибо за это +1 – BoneStarr

Смежные вопросы