Notice Undefined variable

Résolu/Fermé
troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 - Modifié par troubadour2 le 26/06/2014 à 06:52
 Utilisateur anonyme - 26 juin 2014 à 10:20
Bonjour,
Je souhaite mettre en place l'espace membre du site "openclassrooms" qui est par ailleurs très explicite.
J'ai une erreur que je ne comprend pas.
Je souhaiterai quelques explications sur celle-ci.
Pouvez me venir en aide s'ils vous plait.
Je vous remercie très sincérement.
L'erreur est dans cette fonction à la ligne 32
Notice: Undefined variable: query2 in C..............

function sqlquery($requete, $number)
{
 $query = mysql_query($requete) or exit('Erreur SQL : '.mysql_error().' Ligne : '. __LINE__ .'.'); //requête
 queries();
 
 /*
 Deux cas possibles ici :
 Soit on sait qu'on a qu'une seule entrée qui sera
 retournée par SQL, donc on met $number à 1
 Soit on ne sait pas combien seront retournées,
 on met alors $number à 2.
 */
 
 if($number == 1)
 {
  $query1 = mysql_fetch_assoc($query);
  mysql_free_result($query);
  /*mysql_free_result($query) libère le contenu de $query, je
  le fais par principe, mais c'est pas indispensable.*/
  return $query1;
 }
 
 else if($number == 2)
 {
  while($query1 = mysql_fetch_assoc($query))
  {
   $query2[] = $query1;
   /*On met $query1 qui est un array dans $query2 qui
   est un array. Ca fait un array d'arrays :o*/
  }
  mysql_free_result($query);
  return $query2;
 }
 
 else //Erreur
 {
  exit('Argument de sqlquery non renseigné ou incorrect.');
 }
}

2 réponses

troubadour2 Messages postés 277 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 19 juin 2016 1
26 juin 2014 à 10:14
Bonjour
Un grand merci ça marche nickel.
Cordialement
1
Utilisateur anonyme
26 juin 2014 à 10:20
De rien :-)
0
Utilisateur anonyme
26 juin 2014 à 09:02
Bonjour

Ta variable $query2 est créée par la ligne
$query2[] = $query1;
à l'intérieur de ton while.
Mais si tu n'entres pas dans le while ? Elle ne peut pas être créée.
Et si le résultat de ta requête est vide, tu n'entres pas dans ton while. Donc pas de $query2.

Il suffit de définir $query2 comme un tableau vide AVANT d'entrer dans le while : il sera ainsi défini dans tous les cas :

...
 else if($number == 2)
 {
  $query2=array();
  while($query1 = mysql_fetch_assoc($query))
  {
   $query2[] = $query1;
...
0