Использование GET для значений двух текстовых входов - PullRequest
0 голосов
/ 25 сентября 2011

У меня возникли трудности с получением значений двух текстовых вводов:

<form action="search.php">
<input type="text" name="q1">
<input type="text" name="q2" >
<input type="submit" name="submit" value="Search" />
</form>

Это страница search.php:

$q1 = @$_GET['q1'];
$q2 = @$_GET['q2'];

if(isset($q1) && isset($q2)) {
$var= "$q1, $q2";
}

if(isset($q1) && empty($q2)) {
$var= "$q1";
}

Когда оба поля q1 и q2 заполнены и отправлены, это работает отлично. Однако, когда только ввод q1 заполнен и отправлен (оставив q2 пустым), он все равно создает $var, используя первый оператор if - if(isset($q1) && isset($q2) - вместо второго - if(isset($q1) && empty($q2). Почему это происходит?

Ответы [ 5 ]

4 голосов
/ 25 сентября 2011

$ q2 устанавливается, даже если они не вводят никакого значения. Это допустимое поле формы (хотя и содержит пустую строку).

4 голосов
/ 25 сентября 2011

Вы устанавливаете $q1 и $q2, поэтому isset($q1) и isset($q2) всегда будут возвращать true.Попробуйте

if(isset($_GET['q1']) && isset($_GET['q2'])) {

Или проверьте пустое значение:

if(empty($q1) && empty($q2)) {
2 голосов
/ 25 сентября 2011
if ($q1 != '' && $q2 != '') {
    $var = "$q1, $q2";
} elseif($q1 != '') {
    $var = "$q1";
}
2 голосов
/ 25 сентября 2011

Вы устанавливаете и $ q1, и $ q2 при выполнении задания:

$q1 = @$_GET['q1'];
$q2 = @$_GET['q2'];

В случае, когда пользователь не заполнил второе поле, $ q2 просто получает пустую строку.

Строка, которая является пустой, не совпадает со строкой, являющейся нулевой.

Посмотрите на эту страницу об isset из руководства по PHP: http://php.net/manual/en/function.isset.php

0 голосов
/ 25 сентября 2011

Они оба передаются - но не заполнены?Я думаю, условное больше похоже на:

!empty($_GET['q1']) && ($_GET['q1'] != '')

Некоторая комбинация этого должна помочь.Я думаю, q1 и q2 отправляются независимо от того, используются они или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...