Это будет звучать действительно глупо, но я не могу понять, почему я получаю эту ошибку.
Я создал поле выбора, названное «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'];
Когда я запускаю страницу, я получаю эту ошибку:
Примечание. Неопределенный индекс: query_age в index.php в строке 19
Я не понимаю, почему это происходит, и я хотел бы знать, как заставить его уйти.
Я не вижу php-файл, но это может быть так –
замените в файле php:
$query_age = $_GET['query_age'];
с:
$query_age = (isset($_GET['query_age']) ? $_GET['query_age'] : null);
Скорее всего, в первый раз вы запускаете свой скрипт без ?query_age=[something]
и $_GET
не имеет ключа типа query_age
.
Проверка присутствия члена перед его назначением, на мой взгляд, довольно уродлива.
Kohana имеет полезную функцию, чтобы упростить выбор параметров.
Вы можете сделать свой собственный так …
function arrayGet($array, $key, $default = NULL) { return isset($array[$key]) ? $array[$key] : $default; }
И тогда сделайте что-нибудь вроде …
$page = arrayGet($_GET, 'p', 1);
При первом запуске страницы индекс query_age не существует, потому что он не был отправлен из формы.
Когда вы представите форму, она будет существовать, и она не будет жаловаться на это.
#so change $_GET['query_age']; #to: (!empty($_GET['query_age']) ? $_GET['query_age'] : null);
по#so change $_GET['query_age']; #to: (!empty($_GET['query_age']) ? $_GET['query_age'] : null);
если вы используете isset, как ответ, уже опубликованный синглами, просто убедитесь, что в конце есть скобка:
$query_age = (isset($_GET['query_age']) ? $_GET['query_age'] : null);