Listes déroulantes liées entre elles

Listes déroulantes liées entre elles - PHP - Programmation

Marsh Posté le 09-08-2007 à 15:53:32    

Je cherche un code qui affiche des résultats dans la 2éme liste selon le choix fait au première. c'est un vrai casse tête.
Pour commencer, je me connecte à ma BDD, après ça se complique.
Pourriez vous m'aider??

Reply

Marsh Posté le 09-08-2007 à 15:53:32   

Reply

Marsh Posté le 09-08-2007 à 16:10:08    

le plus simple c'est d'utiliser un petit bout d'Ajax, appelé sur un onChange de la premiere liste

Reply

Marsh Posté le 09-08-2007 à 16:12:59    

ça dépend du nombre d'entrées dans chacune des listes, tu peux aussi générer des variables javascripts, et tout faire en javascript directement.

Reply

Marsh Posté le 09-08-2007 à 16:13:29    

wi j'ai vu ça..
mais je veux bien avoir une trame d'un script..

Reply

Marsh Posté le 09-08-2007 à 16:13:41    

PunkRod a écrit :

ça dépend du nombre d'entrées dans chacune des listes, tu peux aussi générer des variables javascripts, et tout faire en javascript directement.


 
si y'a 100 choix à 50 sous-entrées chacun, je te raconte pas le code dans ta page  [:el awrence xi]

Reply

Marsh Posté le 09-08-2007 à 16:23:09    

non je me connecte à ma BDD pour remonter les infos..

Reply

Marsh Posté le 10-08-2007 à 11:48:58    

sabbahh a écrit :

wi j'ai vu ça..
mais je veux bien avoir une trame d'un script..


Tu vas , tu cherches le tuto sur Ajax, et tu t'amuses !
 
A+

Reply

Marsh Posté le 10-08-2007 à 11:54:47    

je m'amuse grave t'inkiét lol :s
Effectivement, là j'ai trouvé un script ajax pour les listes liées même avec ça j'affiche pas ce que je veux dans ma 2éme liste :(

Reply

Marsh Posté le 10-08-2007 à 11:55:38    

Details or there is no problem.

Reply

Marsh Posté le 10-08-2007 à 11:57:43    

traceurs, tests, toussa...

Reply

Marsh Posté le 10-08-2007 à 11:57:43   

Reply

Marsh Posté le 10-08-2007 à 12:02:34    

Details!
j'ai l'impression que ce bout de code est faut (vu que je suis une vrai débutante en ajax)
sel = document.getElementById('liste1');
Id = sel.options[sel.selectedIndex].value;
xhr.send("Id="+Id)
(dc dans ma 2éme page, j'apel ce Id avec la méthode post => $_POST['Id']

Reply

Marsh Posté le 10-08-2007 à 12:03:49    

je suis exactement cette trame:
http://siddh.developpez.com/articles/ajax/#LIV-A
mais aparemment je remplace mal mes données

Reply

Marsh Posté le 11-08-2007 à 10:34:56    

Salut,
 
Tout est très bien expliqué ici : http://toutjavascript.com/savoir/xmlhttprequest.php3
Tu veras c'est assez simple. Et si tu veux améliorer ton code "Ajax", je conseille de lire cet article : http://www.webpasties.com/xmlHttpRequest/
Tous les exemples de code sont téléchargeables.
 
A+
Lionel.

Reply

Marsh Posté le 20-08-2007 à 10:41:50    

En fait, j'ai compris un peu le code.. c'est juste que mes tables ne contiennent pas des ID (key auto increment) mes des ID de type varchar, du coup le code ne marche pas. il accept que les chiffres, est normal?

Reply

Marsh Posté le 20-08-2007 à 22:37:13    

Prob résolu.. la requete était mal écrite

Reply

Marsh Posté le 21-08-2007 à 13:47:26    

Encore un autre problème :s
là j'arrive à lier 2 listes, mais j'ai trop de mal à ajouter une 3éme.
help plz

Reply

Marsh Posté le 21-08-2007 à 13:57:53    

ben faut comprendre le code, le généraliser, et adapter.

Reply

Marsh Posté le 21-08-2007 à 14:08:51    

j'ai bo essayé mais rien.. :(

Reply

Marsh Posté le 21-08-2007 à 16:02:58    

PLZ HELP!!! je souhaite ajouter une 3éme liste, et je sais pas exactement où insérer le code
Ma 1ere page:

Code :
  1. <html>
  2. <head>
  3. <title></title>
  4. <script type='text/javascript'>
  5.   function getXhr(){
  6.       var xhr = null;
  7.       if(window.XMLHttpRequest)
  8.       xhr = new XMLHttpRequest();
  9.       else if(window.ActiveXObject){ // Internet Explorer  
  10. try {
  11.         xhr = new ActiveXObject("Msxml2.XMLHTTP" );
  12.      } catch (e) {
  13.      xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  14.      }
  15. }
  16.       else { // XMLHttpRequest non supporté par le navigateur  
  17.       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  18.      xhr = false; }
  19.      return xhr;
  20. }
  21. function go(){
  22.    var xhr = getXhr();
  23.    xhr.onreadystatechange = function(){
  24.    if(xhr.readyState == 4 && xhr.status == 200)
  25.    { leselect = xhr.responseText;
  26. document.getElementById('sousCat').innerHTML = leselect;
  27. }} xhr.open("POST","ListLP.php",true);
  28. xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  29. sel = document.getElementById('articles');
  30. code = sel.options[sel.selectedIndex].value;
  31. xhr.send("code="+code);}
  32. </script> </head>
  33. <body> <form>
  34. <fieldset style="width: 800px">
  35. <label>list1 :</label>
  36. <select name='articles' id='articles' onchange='go()'>
  37. <option align='center' value='-1'>- - -Selectionner- - -</option>
  38. <? mysql_connect("localhost","root","" );
  39. mysql_select_db("xxx" );
  40. $res = mysql_query("SELECT * FROM list1" );
  41. while($row = mysql_fetch_assoc($res)){
  42. echo "<option value='".utf8_encode($row["nom"])."'>".utf8_encode($row["nomGr"])."</option>";}?>
  43. </select>
  44. <div id='sousCat' style='display:inline'>
  45. </div>
  46. </fieldset></form> </body>
  47. </html>


ma 2éme page:

Code :
  1. <?php
  2. if(isset($_POST["code"]))
  3. {
  4.  $Scode=$_POST["code"];
  5.  mysql_connect("localhost","root","" );
  6.  mysql_select_db("xxx" );
  7.   $sql  = "SELECT code,nom FROM list ";
  8.                           $sql .= "WHERE nom='".$_POST["code"]."'";
  9.                           $sql .= "ORDER BY nom";
  10.   
  11.  $res = mysql_query($sql);
  12.  if (mysql_num_rows($res)>0)
  13.  {
  14.  echo"<option value='-1'>Tous les sousCats</option>";
  15.  while($row = mysql_fetch_assoc($res)){
  16.  echo "<option value='".utf8_encode($row["code"])."'>".utf8_encode($row["nom"])."</option>";
  17.  }
  18.  }
  19.  else {echo"<option value='-1'>Pas de SScat disponible</option>";}
  20. }
  21. echo"</select>";
  22. ?>


Message édité par sabbahh le 21-08-2007 à 16:36:48
Reply

Marsh Posté le 23-08-2007 à 14:36:35    

merci quand même. j'ai trouvé une autre solution..

Reply

Marsh Posté le 18-11-2008 à 09:49:59    

sabbahh a écrit :

merci quand même. j'ai trouvé une autre solution..


 
je vous explique  
en php  
une table contient les villes
une table contient les les communes de chaque ville
et une table contrient les quartiers de chaque communes
 
je veux quand je choisi dans la liste ville, ça me donne dans la 2eme liste les communes de ce pays, et quand je choisi une commune de cette 2eme liste ça me donne dans la 3eme liste les quartiers de cette commune .  
Biensure les villes commune  et quartiers se trouvent dans une base de donnée (3tables)
SVP si vous pouvez m'envoyer le code j'ai un travail urgent  
mon mail b_amel_z@hotmail.fr
merci

Reply

Marsh Posté le 18-11-2008 à 13:47:50    

Mais bien sur  [:xam hot] , j'ai du ménage chez moi tu peux venir le faire?

Reply

Marsh Posté le 18-11-2008 à 14:17:24    

sabbahh a écrit :

merci quand même. j'ai trouvé une autre solution..


 
 
j'ai fait ce code d'aprés ce lien http://siddh.developpez.com/articles/ajax/#LIV-A
de deux liste  
il ne marche pas:

Code :
  1. CREATE TABLE `auteur` (
  2.   `id` tinyint(4) NOT NULL auto_increment,
  3.   `nom` varchar(50) NOT NULL,
  4.   PRIMARY KEY  (`id`)
  5. );
  6. insert into `auteur` values
  7. (1,'Clive Cussler'),
  8. (2,'Harlan Coben'),
  9. (3,'Franck Herbert'),
  10. (4,'Pierre Bordages');
  11. CREATE TABLE `livre` (
  12.   `id` tinyint(4) NOT NULL auto_increment,
  13.   `titre` varchar(50) NOT NULL,
  14.   `idAuteur` tinyint(4) default NULL,
  15.   PRIMARY KEY  (`id`)
  16. ) ;
  17. insert into `livre` values
  18. (1,'Odyssee',1),
  19. (2,'Sahara',1),
  20. (3,'Dragon',1),
  21. (4,'Une chance de trop',2),
  22. (5,'Ne le dis a personne',2),
  23. (6,'Disparu à jamais',2),
  24. (7,'Dune',3),
  25. (8,'La barriere de santaroga',3),
  26. (9,'Les guerriers du silence',4),
  27. (10,'La citadelle hyponeros',4),
  28. (11,'Terra mater',4);


 
le fichier auteur.php

Code :
  1. <html>
  2. <head>
  3.  <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
  4.  <script type='text/javascript'>
  5.   function getXhr(){
  6.                                 var xhr = null;
  7.    if(window.XMLHttpRequest) // Firefox et autres
  8.       xhr = new XMLHttpRequest();
  9.    else if(window.ActiveXObject){ // Internet Explorer  
  10.       try {
  11.                   xhr = new ActiveXObject("Msxml2.XMLHTTP" );
  12.               } catch (e) {
  13.                   xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  14.               }
  15.    }
  16.    else { // XMLHttpRequest non supporté par le navigateur  
  17.       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  18.       xhr = false;
  19.    }
  20.                                 return xhr;
  21.   }
  22.   /**
  23.   * Méthode qui sera appelée sur le click du bouton
  24.   */
  25.   function go(){
  26.    var xhr = getXhr();
  27.    // On défini ce qu'on va faire quand on aura la réponse
  28.    xhr.onreadystatechange = function(){
  29.     // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  30.     if(xhr.readyState == 4 && xhr.status == 200){
  31.      leselect = xhr.responseText;
  32.      // On se sert de innerHTML pour rajouter les options a la liste
  33.      document.getElementById('livre').innerHTML = leselect;
  34.     }
  35.    }
  36.    // Ici on va voir comment faire du post
  37.    xhr.open("POST","ajaxLivre.php",true);
  38.    // ne pas oublier ça pour le post
  39.    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  40.    // ne pas oublier de poster les arguments
  41.    // ici, l'id de l'auteur
  42.    sel = document.getElementById('auteur');
  43.    idauteur = sel.options[sel.selectedIndex].value;
  44.    xhr.send("idAuteur="+idauteur);
  45.   }
  46.  </script>
  47. </head>
  48. <body>
  49.  <form>
  50.   <fieldset style="width: 500px">
  51.    <legend>Liste liées</legend>
  52.    <label>Auteurs</label>
  53.    <select name='auteur' id='auteur' onchange='go()'>
  54.     <option value='-1'>Aucun</option>
  55.     <?
  56.      mysql_connect("localhost","root","root" );
  57.      mysql_select_db("test" );
  58.      $res = mysql_query("SELECT * FROM auteur ORDER BY nom" );
  59.      while($row = mysql_fetch_assoc($res)){
  60.       echo "<option value='".$row["id"]."'>".$row["nom"]."</option>";
  61.      }
  62.     ?>
  63.    </select>
  64.    <label>Livres</label>
  65.    <div id='livre' style='display:inline'>
  66.    <select name='livre'>
  67.     <option value='-1'>Choisir un auteur</option>
  68.    </select>
  69.    </div>
  70.   </fieldset>
  71.  </form>
  72. </body>
  73. </html>


 
le fichier Ajaxlivre

Code :
  1. <?php
  2. echo "<select name='livre'>";
  3. if(isset($_POST["idAuteur"])){
  4.  mysql_connect("localhost","root","root" );
  5.  mysql_select_db("test" );
  6.  $res = mysql_query("SELECT id,titre FROM livre
  7.   WHERE idAuteur=".$_POST["idAuteur"]." ORDER BY titre" );
  8.  while($row = mysql_fetch_assoc($res)){
  9.   echo "<option value='".$row["id"]."'>".$row["titre"]."</option>";
  10.  }
  11. }
  12. echo "</select>";
  13. ?>


 
ou est le probleme ici
 
 
 
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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