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
Я не понимаю, почему это происходит, и я хотел бы знать, как это сделать.
Ответы
Ответ 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);