Undefined index
Résolu
younes3120
Messages postés
1
Statut
Membre
-
younes27 -
younes27 -
Bonjour, en débutent avec php je suis bloqué avec les requêtes préparés
voici le code :
*
*
et l'erreur c'set la suiv:
( ! ) Notice: Undefined index: possesseur in C:\wamp\www\test\req_prepare.php on line 12
Call Stack
# Time Memory Function Location
1 0.0010 135672 {main}( ) ..\req_prepare.php:0
( ! ) Notice: Undefined index: prix_max in C:\wamp\www\test\req_prepare.php on line 12
Call Stack
# Time Memory Function Location
1 0.0010 135672 {main}( ) ..\req_prepare.php:0
*
Merci.
voici le code :
*
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '',
$pdo_options);
$req = $bdd->prepare('SELECT nom, prix FROM jeux_video WHERE possesseur = ? AND prix <= ? ORDER BY prix');
$req->execute(array($_GET['possesseur'], $_GET['prix_max']));
echo '<ul>';
while ($donnees = $req->fetch())
{
echo '<li>' . $donnees['nom'] . ' (' . $donnees['prix'] . 'EUR)</li>';
}
echo '</ul>';
$req->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
*
et l'erreur c'set la suiv:
( ! ) Notice: Undefined index: possesseur in C:\wamp\www\test\req_prepare.php on line 12
Call Stack
# Time Memory Function Location
1 0.0010 135672 {main}( ) ..\req_prepare.php:0
( ! ) Notice: Undefined index: prix_max in C:\wamp\www\test\req_prepare.php on line 12
Call Stack
# Time Memory Function Location
1 0.0010 135672 {main}( ) ..\req_prepare.php:0
*
Merci.
2 réponses
-
'lut, c'est juste que les dits paramètres GET ne sont pas présents... Penses bien a vérifier tes entrées avec des
if
et la fonctionisset
avant de faire tes requêtes. -
<Bonjour,
Voici le code "amélioré" :<?php //-----------------------------------------------------------------------// //connexion à la BDD //-----------------------------------------------------------------------// try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } //-----------------------------------------------------------------------// // Traitement //-----------------------------------------------------------------------// //Récupération des variables AVANT de les utiliser $possesseur = !empty($_GET['possesseur']) ? $_GET['possesseur'] : NULL; $prix_max = !empty($_GET['prix_max']) ? $_GET['prix_max'] : NULL; if($possesseur && $prix_max ){ // si les variables existents et ne sont pas vides try{ $sql = "SELECT nom, prix FROM jeux_video WHERE possesseur = :possesseur AND prix <= :prix ORDER BY prix"; $params=array(":possesseur"=>$possesseur , ":prix"=> $prix_max); $req = $bdd->prepare($sql); $req->execute($params); //on stocke le résultat de la requête dans un array $arr_result = $req->fetchAll(); $req->closeCursor(); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } // Si la requête a retourné qqchose : if(count($arr_result)>0){ echo '<ul>'; foreach($arr_result as $R){ echo '<li>' . $R['nom'] . ' (' . $R['prix'] . 'EUR)</li>'; } echo '</ul>'; } }else{ echo "<br>Erreur ; Une ou plusieurs variables sont manquantes !"; echo " <br> - possesseur : $possesseur "; echo " <br> - prix_max : $prix_max "; }
.. si tu reçois un message d'erreur "Une ou plusieurs variables sont manquantes" .. c'est que tu ne passes rien dans ton $_GET ... ou que tes variables n'ont pas le "bon" nom ...
Dans ce cas .. fais unprint_r($_GET);
au début de ton script pour voir ce que cette variable contient......
(et si elle est vide... c'est que le souci vient de la page qui appelle ce code....)
Cordialement,
Jordane