Undefined index

Résolu/Fermé
younes3120 Messages postés 1 Date d'inscription mercredi 26 août 2015 Statut Membre Dernière intervention 26 août 2015 - Modifié par younes3120 le 26/08/2015 à 17:20
 younes27 - 29 août 2015 à 16:44
Bonjour, en débutent avec php je suis bloqué avec les requêtes préparés

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

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
26 août 2015 à 19:24
'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 fonction
isset
avant de faire tes requêtes.
0
merci beaucoup.
0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié par jordane45 le 26/08/2015 à 20:45
<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 un
print_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
0
Merci beaucoup Mr Jordan pour ce code bien améliorer ,le problème a été regelé.
0