web-dev-qa-db-fra.com

PHP Index non défini

Cela va paraître vraiment stupide, mais je ne peux pas comprendre pourquoi je reçois cette erreur.

J'ai créé une boîte de sélection, nommée "query_age" dans ma forme 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>

Dans la forme php correspondante, j'ai:

$query_age = $_GET['query_age'];

Lorsque je lance la page, j'obtiens cette erreur:

Avis: Index non défini: query_age dans index.php à la ligne 19

Je ne comprends pas pourquoi cela se produit et j'aimerais savoir comment le faire disparaître.

42

Je ne vois pas le fichier php, mais ça pourrait être ça -
remplace dans votre fichier php:

$query_age = $_GET['query_age'];

avec:

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

Très probablement, la première fois que vous exécutez votre script sans ?query_age=[something] et $_GET n'a pas de clé comme query_age.

93
singles

La vérification de la présence du député avant de l’assigner est, à mon avis, assez moche.

Kohana a un fonction utile pour simplifier la sélection des paramètres.

Vous pouvez faire le vôtre comme si ...

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

Et puis faire quelque chose comme ...

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

La première fois que vous exécutez la page, l'index query_age n'existe pas car il n'a pas été envoyé à partir du formulaire.

Lorsque vous soumettez le formulaire, celui-ci existera et il ne s'en plaindra pas.

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

si vous utilisez isset comme la réponse déjà affichée par les célibataires, assurez-vous qu’il y a un crochet à la fin, comme suit:
$query_age = (isset($_GET['query_age']) ? $_GET['query_age'] : null);

1
NSDestr0yer