2 listes déroulantes liés javascript+phpmysql+ajax

2 listes déroulantes liés javascript+phpmysql+ajax - PHP - Programmation

Marsh Posté le 14-04-2009 à 23:32:07    

Bonjour,
je voudrais concevoir 2 listes déroulantes liés dont le contenu est des données php mysql la première contient le nom de matière première l'attribut des_mat_pre issu de cette table
 

Code :
  1. #
  2. # Structure de la table `matiere_premiere`
  3. #
  4. CREATE TABLE matiere_premiere (
  5.   code_mat_pre int(20) NOT NULL auto_increment,
  6.   des_mat_pre varchar(20) NOT NULL default '',
  7.   code_four varchar(20) NOT NULL default '',
  8.   PRIMARY KEY  (code_mat_pre,code_four)
  9. ) TYPE=MyISAM;


 
et la deuxième liste qui va selon la jointure de la clé(code_mat_pre) afficher les type de matière première l'attribut des_typ_mat_pre
 

Code :
  1. #
  2. # Structure de la table `type_matiere_premiere`
  3. #
  4. CREATE TABLE type_matiere_premiere (
  5.   code_typ_mat_pre int(20) NOT NULL auto_increment,
  6.   des_typ_mat_pre varchar(20) NOT NULL default '',
  7.   code_mat_pre varchar(20) NOT NULL default '',
  8.   couleur varchar(20) NOT NULL default '',
  9.   PRIMARY KEY  (code_typ_mat_pre,code_mat_pre)
  10. ) TYPE=MyISAM;


 
donc en effet vu qu'on peut pas appeler par un événement javascript du contenu phpmysql j'ai du me concentrer sur l'ajax pour trouver un script qui le permet et voici le lien ou j'ai trouvé un
http://siddh.developpez.com/articles/ajax/#LIV-A
j'ai essayé de l'appliquer le mieux que possible mais c'est seulement le contenu de ma première liste qui s'est affiché
voici mon code pour la première page
 

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('typ_mat_pre').innerHTML = leselect;
  34.     }
  35.    }
  36.    // Ici on va voir comment faire du post
  37.    xhr.open("POST","ajaxtypematierepremiere.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('mat_pre');
  43.    code_mat_pre = sel.options[sel.selectedIndex].value;
  44.    xhr.send("code_mat_pre="+code_mat_pre);
  45.   }
  46.  </script>
  47. </head>
  48. <body>
  49.  <form action="liste déroulante.php" method="post">
  50.   <fieldset style="width: 500px">
  51.    <legend>Liste liées</legend>
  52.    <label>matiere premiere</label>
  53.    <select name='mat_pre' id='mat_pre' onchange='go()'>
  54.     <option value='-1'>Aucun</option>
  55.     <?
  56.      mysql_connect("localhost","root","" );
  57.      mysql_select_db("art-mania" );
  58.      $res = mysql_query("SELECT distinct des_mat_pre FROM matiere_premiere ORDER BY des_mat_pre" );
  59.      while($row = mysql_fetch_assoc($res)){
  60.       echo "<option name='des_mat_pre' value='".$row["des_mat_pre"]."'>".$row["des_mat_pre"]."</option>";
  61.      }
  62.     ?>
  63.    </select>
  64.    <label>type matière première</label>
  65.    <div id='des_typ_mat_pre' style='display:inline'>
  66.    <select name='typ_mat_pre'>
  67.     <option value='-1'>Choisir une matière première</option>
  68.    </select>
  69.    </div>
  70.   </fieldset>
  71.  </form>
  72. </body>
  73. </html>


 
 
et ma deuxième page ajaxtypematierepremiere.php
 

Code :
  1. <?php
  2. echo "<select name='typ_mat_pre'>";
  3. if(isset($_POST["code_mat_pre"])){
  4.  mysql_connect("localhost","root","" );
  5.      mysql_select_db("art-mania" );
  6.  $res = mysql_query("SELECT * FROM type_matiere_premiere,matiere_premiere
  7.   WHERE type_matiere_premiere.code_mat_pre=".$_POST["code_mat_pre"]." ORDER BY des_typ_mat_pre" );
  8.   while($row = mysql_fetch_assoc($res)){
  9.   echo "<option value='".$row["des_typ_mat_pre"]."'>".$row["des_typ_mat_pre"]."</option>";
  10.  }
  11. }
  12. echo "</select>";
  13. ?>


 
 
donc voila c'est complexe et je conjure votre aide merci :((((((((((((((((

Reply

Marsh Posté le 14-04-2009 à 23:32:07   

Reply

Sujets relatifs:

Leave a Replay

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