[PHP][Abandon ;) ] Listes dynamiques en PHP HTML seulement

Listes dynamiques en PHP HTML seulement [PHP][Abandon ;) ] - PHP - Programmation

Marsh Posté le 16-04-2004 à 15:39:11    

Bonjour à tous,
Je cherche à faire des listes dynamiques en PHP, c'est à dire que j'ai une premiere liste dans mon formulaire qui permet  à l'utilisateur de sélectionner une categorie et ensuite une seconde liste qui affiche les sous categories de la categorie selectionnée. Je sais que c'est possible en javascript, mais je préfererai le faire en PHP, je ne connais pas assez le javascript.  
L'utilisateur peut choisir plusieurs sous categories, et je souhaite donc conserver les sous catégories qu'il a sélectionnées dans un tableau. Mon problème c'est que ma page de formulaire se recharge a chaque validation de la premiere liste, et je n'arrive pas à garder mon tableau, je ne sais pas trop comment le conserver entre deux rechargements de ma page. Je suis parti pour essayer de le mettre en variable de sessions, mais il doit y avoir une erreur puisque ça ne marche pas. je vous met mon code, donc si vous voyes une erreur, ou si vous voyez une autre méthode, je suis preneur. On doit sans doute ouvoir le faire avec des fichiers ou des cookies, mais maintenant que je suis parti avec les variables de sessions, autant savoir si c'est possible.
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <title>Choix categorie</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  7. </head>
  8. <body>
  9. <?php
  10. // j'initialise toutes mes variables
  11. if (! isset ($ind)) $ind=0;
  12. if (! isset($validation)) $validation ='';
  13. if (! isset($validation2)) $validation2 ='';
  14. if (! isset($sscategorie)) $sscategorie ='';
  15. if (! isset($validationfinale)) $validationfinale ='';
  16. if(! isset($categorie)) $categorie=0;
  17. require("../inclusion/conn.php" ); //je me connecte à la base de données
  18. ?>
  19. <form method="post" name="categories">//premier formulaire pour choisir la categorie
  20.   <?
  21.  $echec="";
  22.  $requete="select intitule, numero from catgencom order by intitule";//je recherche mes categories dans la base de donnees
  23.   $resul = mysql_query($requete) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  24.   $resultat="<select name='categorie'>";
  25.   $resultat .= "<option value='0'>Selectionner la catégorie...</option
  26.   while($valeur = mysql_fetch_array($resul))
  27.      {
  28.   $valeur['intitule']=ucfirst($valeur['intitule']);
  29.   if ($valeur['numero']==$categorie)>";//je construit la premiere liste
  30.   {
  31.   $resultat .= "<option value='".$valeur['numero']."' selected>".$valeur['intitule']."</option>";//pour selectionner la categorie choisie par l'utilisateur
  32.   }
  33.   else
  34.   {
  35.   $resultat .= "<option value='".$valeur['numero']."'>".$valeur['intitule']."</option>";
  36.   }
  37.      }
  38.   $resultat .= "</select><br><br>";
  39.  echo $resultat;//j'affiche la liste
  40.  ?>
  41. //validation de la premiere liste
  42. <input name="valid" type="submit" value="Valider la catégorie">
  43. <input type="reset" value="Effacer">
  44. <input type="hidden" name="validation" value="ok">
  45. </form>
  46. <?php
  47. while ((! $validationfinale) && (($validation) || ($validation2)))//tant que l'utilisateur ne veut pas quitter, mais seulement si il a deja valider la premiere liste
  48. {
  49.         $sscatint[]=$_SESSION['sscatint[]'];//j'essaie de recuperer le tableau des sous categories choisies
  50.  $validation='';
  51.  $validation2='';
  52.  $indice=$ind+1;//j'augmente l'indice du tableau ou sera placee la sous categorie choisie
  53.  $requete="select intitule, numero from sscatcom where categorie = '".$categorie."' order by intitule"; //je selectionne les sous categories de ma base de donnees en fonction de la categorie choisie
  54.   $resul = mysql_query($requete) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  55.   $resultat = "<form method='post' action='Choixcat.php?ind=".$indice."' name='sscategories'>"; //second formulaire, pour choisir la sous categorie
  56.  $resultat .= "<select name='sscategorie'>";
  57.   $resultat .= "<option value='0'>Selectionner la sous-catégorie...</option>";
  58.   while($valeur = mysql_fetch_array($resul)) //je construit la liste
  59.      {
  60.   $valeur['intitule']=ucfirst($valeur['intitule']);
  61.   $resultat .= "<option value='".$valeur['numero']."'>".$valeur['intitule']."</option>";
  62.      }
  63.   $resultat .= "</select><br><br>";
  64.  echo $resultat;// j'affiche la liste
  65.  ?>
  66. //validation de la sous categorie
  67.  <input name="valid" type="submit" value="Ajouter cette sous catégorie">
  68.  <input type="reset" value="Effacer">
  69.  <input type="submit" value="Quitter le formulaire">
  70.  <input type="hidden" name="validation2" value="ok">
  71.  </form>
  72.  <?
  73.  // j'affiche les sous categories deja choisies
  74.  $requete = "select intitule,numero from sscatcom where numero = '".$sscategorie."' order by intitule";
  75.   $resul = mysql_query($requete) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  76.  $valeur = mysql_fetch_array($resul);
  77.  $sscatint[$ind]=$valeur['intitule'];
  78.  $ind++;
  79.  echo "<br><br>Sous catégories : <br><br>";
  80.  for($i=0 ; $i<5 ; $i++)
  81.   {
  82.    echo "<br><br> Categorie ".$i." : ".$sscatint[$i]."<br><br>";
  83.   }
  84.  session_register('sscatint[]');
  85. }
  86. ?>
  87. </body>
  88. </html>


 
Donc avec ce code, il m'affiche a chaque fois la derniere sous categorie choisie, mais aps celles choisies avant, comme si le tableau se vidait a chaque rafraichissement.
 
Le code est tres brouillon, mais c'est que je ne savais vraiment pas comment structurer ma page. Merci tout de meme a ceux qui auront le courage de me lire jusqu'au bout


Message édité par force_jaune le 19-04-2004 à 11:08:03
Reply

Marsh Posté le 16-04-2004 à 15:39:11   

Reply

Marsh Posté le 17-04-2004 à 12:03:17    

En effet il faut du courage :D
Deja, en lisant le titre on voit le problème. Quelque chose de "dynamique" coté client ne peut pas impliquer du php puisque c'est un script serveur. A mon sens il vaudrait mieux utiliser du javascript, c'est pas si compliqué...
Maintenant tu m'as l'air tétu :D donc si tu tiens a utiliser php il faudra recharger ta page une fois les sous-cat choisies pour que php remplisse ton autre liste. Ce qui implique un formulaire et donc ne devrait pas poser de problème pour récupérer les sous-cat saisies.


Message édité par boulax le 17-04-2004 à 12:03:49

---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 19-04-2004 à 10:11:14    

lol klr que je suis têtu :D
Mais pas tant que ça, j'ai finalement fini par me mettre au javascript. Donc j'arrive a avoir ma liste dynamique, j'ai plus de mal à récupérer toutes les sous categories que le gars choisi, mais bon ca avance :)

Reply

Marsh Posté le 20-04-2004 à 09:25:45    

pour garder tes valeurs de page en page, tu fais (dans ton formulaire) un action=tapage.php?nomValeur=tesvaleurs
 
et a chaque fois que tu arrive sur tapage.php, tu sauvegarde tes valeurs et les repasse en param
pour passer un tableau, le plus simple est de la convertir en chaine de car (implode je crois)


Message édité par swich le 20-04-2004 à 09:26:52
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed