Подтвердить что ты не робот

PHP Undefined Индекс

Это будет звучать действительно глупо, но я не могу понять, почему я получаю эту ошибку.

Я создал поле выбора с именем "query_age" в моей форме html:

<form method="get" action="user_list.php">
<select name="query_age">
  <option value="">Doesn't matter</option>
  <option value="between 18 and 30">18 - 30</option>
  <option value="between 31 and 40">31 - 40</option>
  <option value="between 41 and 50">41 - 50</option>
  <option value="between 51 and 60">51 - 60</option>
  <option value="between 61 and 70">61 - 70</option>
  <option value="between 71 and 80">71 - 80</option>
  <option value="between 81 and 90">81 - 90</option>
  <option value="> 90">Older than 90</option>
</select>

В соответствующей php-форме я:

$query_age = $_GET['query_age'];

Когда я запускаю страницу, я получаю эту ошибку:

Примечание: Undefined index: query_age в index.php в строке 19

Я не понимаю, почему это происходит, и я хотел бы знать, как это сделать.

4b9b3361

Ответ 1

Я не вижу php файл, но это может быть так: замените в своем php файле:

$query_age = $_GET['query_age'];

с:

$query_age = (isset($_GET['query_age']) ? $_GET['query_age'] : null);

Скорее всего, при первом запуске script без ?query_age=[something] и $_GET не будет ключа типа query_age.

Ответ 2

Проверка присутствия члена перед его назначением, на мой взгляд, довольно уродлива.

Kohana имеет полезную функцию, чтобы упростить выбор параметров.

Вы можете сделать свой собственный так...

function arrayGet($array, $key, $default = NULL)
{
    return isset($array[$key]) ? $array[$key] : $default;
}

И затем сделайте что-то вроде...

$page = arrayGet($_GET, 'p', 1);

Ответ 3

При первом запуске страницы индекс query_age не существует, потому что он не был отправлен из формы.

Когда вы отправляете форму, она будет существовать, и она не будет жаловаться на это.

#so change
$_GET['query_age'];
#to:
(!empty($_GET['query_age']) ? $_GET['query_age'] : null);

Ответ 4

если вы используете isset, как ответ, уже опубликованный синглами, просто убедитесь, что в конце есть скобка, например:
$query_age = (isset($_GET['query_age']) ? $_GET['query_age'] : null);