liste dynamique php associé a une base de données mysql [RESOLU]

liste dynamique php associé a une base de données mysql [RESOLU] - HTML/CSS - Programmation

Marsh Posté le 25-06-2010 à 18:00:00    

Bonjour à tous !
 
Etant nouvelle dans le monde de javascript, j'ai essayé de mettre dans une première une liste déroulante les champs de mes tables, puis, de faire apparaitre dans une deuxième liste toutes les valeurs correspondantes à ce champs lorsque la sélection de la première change mais sans grand succès...
 
Grâce à mon code, j'ai réussi à récuperer tout les champs dans la première liste, mais lors du changement de sa valeur, aucune autre liste déroulante n'apparait :??:  
 
Je vous montre donc mon code en espérant que vous pourrez m'aider :
 

Code :
  1. <?php
  2. echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" );
  3. ?>
  4. <html  xml:lang="fr" >
  5. <head>
  6. <script type="text/javascript" src="./arrayPHP2JS.js" charset="iso_8859-1"></script>
  7. <script type="text/javascript" src="./changeValeur.js" charset="iso_8859-1"></script>
  8.  
  9. <title> Base de données ARECOFA </title>
  10. </title>
  11. <br/><br/><u><font size=+50 color=seagreen> <center> Test : </center></font></u>
  12. <br/><br/><br/><br/>
  13. <?php
  14. $link=mysql_connect("localhost", "root", "" ) OR die('Erreur de connexion');
  15. mysql_select_db("arecofa" );
  16. $req=mysql_query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='produit' or TABLE_NAME='fabricant'" ) or die ("requete impossible" );
  17. $champs=array();
  18. while ($row = mysql_fetch_array($req))
  19.  {//echo "colonne : $row[0] <br/>";
  20.  if ($row[0] != "num_fabricant" and $row[0] != "num_de_produit" and $row[0] != "photo" )
  21.   {$recherche=mysql_query("select $row[0] from produit, fabricant " );
  22.   $id = 0;
  23.   $temoin_t=0;
  24.   $temoin=array();
  25.   //echo "champs : <br/>";
  26.   while($ligne = mysql_fetch_assoc($recherche))
  27.    {$p = $row[0];
  28.    $v = $ligne[$row[0]];
  29.    //echo "$v <br/>";
  30.    $b=0;
  31.    foreach ($temoin as $cle => $val)
  32.     {if ($val == $v)
  33.      {$b=1;
  34.      }
  35.     }
  36.    if ( $b==0 and $temoin_t==0)
  37.     {$champs[$p]=array();
  38.     $champs[$p][0]=$row[0];
  39.     $champs[$p][1] = array();
  40.     $champs[$p][2] = array();
  41.     $temoin_t=1;
  42.     }
  43.    if ($b==0)
  44.     {$champs[$p][1][$id] = $v;
  45.     $champs[$p][2][$id] = $ligne[$row[0]];
  46.     $id++;
  47.     $temoin[] = $v;
  48.     }
  49.    }
  50.   }
  51.  }
  52.  $chaine = htmlspecialchars(serialize($champs), ENT_QUOTES);
  53.  ?>
  54.  <script type="text/javascript">
  55.  /* <![CDATA[ */
  56.  <!--
  57.  /*
  58.  * Ici, on transmets la chaîne sérialisée à JavaScript  
  59.  * pour la transformer en tableau indexé JavaScript  
  60.  */
  61.  var tableau = new PhpArray2Js('<?php echo $chaine; ?>');
  62.  var tab = tableau.retour();
  63.  // -->
  64.  /* ]]> */
  65.  </script>
  66. </head>
  67. <body style="background:lightgreen" link=darkgreen vlink=green>
  68.  <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgprod">
  69.  <legend>Sélectionnez un champs</legend>
  70.  <select name="champs" id="champs" onchange="changeValeur(tab,this.value);">
  71.    <option value="vide">- - - Choisissez un champs - - -</option>
  72.   <?php
  73.   /* Construction de la première liste : on se sert du tableau PHP */
  74.   $nbr = count($champs);
  75.   foreach($champs as $nr => $nom)
  76.    {
  77.    ?>
  78.    <option value="<?php echo($nr); ?>"><?php echo($nr); ?></option>
  79.    <?php
  80.    }
  81.   ?>
  82.  </select>
  83.   <span id="blocValeur"></span><br />
  84.   <input type="submit" name="ok" id="ok" value="Envoyer" />
  85.  </form>
  86. </body>
  87. </html>


 
puis mon fichier javascript :

Code :
  1. /* On crée la fonction qui va construire la seconde liste déroulante */
  2. function changeValeur(tab, champs)
  3. {
  4.     if(champs != "vide" )
  5.     {
  6.     /* On compte les départements de cette région */
  7.     var nbd = tab[champs][1].length;
  8.     var form_d  = '<select name="valeur" id="nom_valeur">';
  9. form_d  += '<option value="vide">- - - Choisissez une valeur - - -</option>';
  10.     for(var j = 0;  j < nbd; j++)
  11.     {
  12.  if (tab[champs][1][j] != undefined)
  13.   {form_d += '  <option value="'+ tab[champs][1][j] +'">'+ tab[champs][2][j] +'<\/option>';
  14.   }
  15.     }
  16.     form_d += '<\/select>';
  17.     }
  18.     else
  19.     {
  20.         form_d = "";
  21.     }
  22.     document.getElementById("blocValeur" ).innerHTML = form_d;
  23. }


 
Merci à ceux qui sont arrivé à me lire jusqu'ici, si vous avez des réponses... :)


Message édité par Tribalnanasss le 05-07-2010 à 14:05:17
Reply

Marsh Posté le 25-06-2010 à 18:00:00   

Reply

Marsh Posté le 05-07-2010 à 11:44:27    

Personne ??? :(

Reply

Marsh Posté le 05-07-2010 à 14:03:32    

Je pense avoir résolu mon problème :
 
Il semblerai que les espaces que contiennent les champs que j'ai mis dans le tableau php empêche sa transcription en javascript

Reply

Sujets relatifs:

Leave a Replay

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