Problème liste déroulante en php/mysql


Dax701
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 49
Inscription: 11 Juin 2007

Problème liste déroulante en php/mysql

Message le Jeu Jan 14, 2010 11:02

Bonjour à tous,

J'ai besoin d'aide pour un problème qui me fait tourner en rond depuis des heures...
J'aimerai créer dans un formulaire, une liste déroulante qui listerait des catégories et leurs sous-catégories respectives de manière "aérée" pour que ce soit bien lisible pour l'utilisateur, et voici le code que j'ai mis en place :

Code: Tout sélectionner
<?php
function untree($parent, $level)
{
   $parentsql = mysql_query("SELECT * FROM `". PREFIX ."categories` WHERE `catParentId` = $parent ORDER BY `catName`");
   $return = "";
   if (!mysql_num_rows($parentsql))
   {
      return;
   }
   else
   {
      while($branch = mysql_fetch_assoc($parentsql))
      {
         $echo_this = "<option value='";
         $echo_this.= $branch["catId"];
         $echo_this.= "'>";
         
         for ($x=1; $x<=$level; $x++)
         $echo_this.= "&nbsp;&nbsp;&nbsp;";
         
         $echo_this.= $branch["catName"];
         $echo_this.="</option>";
         $return.=$echo_this;
         $rename_level = $level;
         $return.= untree($branch["catId"], ++$rename_level);
         
      }
   }
   return $return;
}

function getCategories()
{
   $catList = mysql_query("SELECT * FROM `". PREFIX ."categories` WHERE `catParentId` = 0 ORDER BY `catName`");
   while ($row = mysql_fetch_array($catList))
   {
      $string = "<option value='";
      $string.= $row["catId"];
      $string.= "'>";
      $string.= $row["catName"];
      $string.= "</option>";
      $string.= untree($row["catId"], 1);
   }
   
   return $string;
}

$catList = getCategories();
?>
<select name='catParent'><option value='0'>None</option><?php echo $catList ?></select>


Si dans ma table "categories" j'ai par exemple 3 catégories configurées comme ci-dessous, le code fonctionne bien et ma liste déroulante n'a pas de problème :

catId....catParentId....catName

1................0................Test
2................1................Test2
3................2................Test3

Par contre dès que je rajoute une autre catégorie principale (donc avec catParentId = 0) comme ci-dessous, le code zappe la première catégorie principale (Test) et s'occupe uniquement de la dernière catégorie principale qui a été créée (Test4) :

catId....catParentId....catName

1................0................Test
2................1................Test2
3................2................Test3
4................0................Test4
5................4................Test5

Est-ce que vous pourriez me dire ce qui ne va pas et/ou d'où peut venir le problème ? Merci d'avance.


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Re: Problème liste déroulante en php/mysql

Message le Jeu Jan 14, 2010 12:50

Code: Tout sélectionner
while ($row = mysql_fetch_array($catList))
   {
      $string = "<option value='";


Tu reset ta variable "$string" à l'intérieur de la boucle, normal que ca va pas :roll:
$string = "<option value='";


Dax701
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 49
Inscription: 11 Juin 2007

Re: Problème liste déroulante en php/mysql

Message le Jeu Jan 14, 2010 14:00

Je te remercie beaucoup... tu peux pas imaginer combien d'heures j'ai passé à cause de ce foutu point manquant...

Maintenant j'ai juste une erreur notice, alors si tu pouvais me dire comment la régler je t'en serais reconnaissant, sinon c'est pas grave car par la suite je ne vais pas faire afficher ce genre d'erreurs. Encore une fois merci.

Notice: Undefined variable: string in....... on line 70 (c'est la ligne en question)


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: Problème liste déroulante en php/mysql

Message le Jeu Jan 14, 2010 15:46

Vu que tu concatenes string ($string .= ....) il faut définir $string avant la boucle while:
Code: Tout sélectionner
$string = '';


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Re: Problème liste déroulante en php/mysql

Message le Jeu Jan 14, 2010 15:57

Dax701 a écrit:Je te remercie beaucoup... tu peux pas imaginer combien d'heures j'ai passé à cause de ce foutu point manquant...

Si, j'imagine bien, j'ai déja eu le coup où j'avais mis "return" dans la boucle :oops:


Dax701
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 49
Inscription: 11 Juin 2007

Re: Problème liste déroulante en php/mysql

Message le Jeu Jan 14, 2010 19:52

C'est bien çà spout...
Merci à tous les deux !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité