Undefined index

Résolu
younes3120 Messages postés 1 Statut Membre -  
 younes27 -
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

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    '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
    1. younes27
       
      merci beaucoup.
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    <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
    1. younes27
       
      Merci beaucoup Mr Jordan pour ce code bien améliorer ,le problème a été regelé.
      0