utilisation de script js plusieurs fois dans une même page

utilisation de script js plusieurs fois dans une même page - HTML/CSS - Programmation

Marsh Posté le 08-07-2010 à 18:40:18    

Bonjour tout le monde,
 
j'ai un soucis avec javascript;
j'aimerai afficher autant de fois que l'utilisateur le veut certains champs. J'ai donc creer des objet avec des onchange pour les faire apparaître.
Seulement, quand j'arrive au dernier onchange et qu'il renvoie au 1er, toutes les autres listes s'effacent pour revenir au même point qu'au depart.
Je me suis dis que c'etait peu être un problème de nom de champs que j'ai voulu corriger en concatenant un chiffre à la fin du nom du champs. Mais la variable revient également à 0...
Je vous mets le code pour plus de compréhension.

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. <script type="text/javascript" src="./operateur.js" charset="iso_8859-1"></script>
  9. <script type="text/javascript" src="./appChamps.js" charset="iso_8859-1"></script>
  10.  
  11. <title> Base de données ARECOFA </title>
  12. </title>
  13. <br/><br/><u><font size=+50 color=seagreen> <center> Test : </center></font></u>
  14. <br/><br/><br/><br/>
  15. <?php
  16. $link=mysql_connect("localhost", "root", "" ) OR die('Erreur de connexion');
  17. mysql_select_db("arecofa" );
  18. $req=mysql_query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='produit' or TABLE_NAME='fabricant'" ) or die ("requete impossible" );
  19. $champs=array();
  20. while ($row = mysql_fetch_array($req))
  21.  {//echo "colonne : $row[0] <br/>";
  22.  if ($row[0] != "num_fabricant" and $row[0] != "num_de_produit" and $row[0] != "photo" and $row[0] != "adresse" and $row[0] != "description" )
  23.   {$recherche=mysql_query("select distinct $row[0] from produit, fabricant " );
  24.   $id = 0;
  25.   $temoin_t=0;
  26.   //echo "champs : <br/>";
  27.   while($ligne = mysql_fetch_assoc($recherche))
  28.    {$p = $row[0];
  29.    $v = $ligne[$row[0]];
  30.    if ($temoin_t==0)
  31.     {$champs[$p]=array();
  32.     $champs[$p][1] = array();
  33.     $champs[$p][2] = array();
  34.     $temoin_t=1;
  35.     }
  36.    $champs[$p][1][$id] = $v;
  37.    $champs[$p][2][$id] = $ligne[$row[0]];
  38.    $id++;
  39.    }
  40.   }
  41.  else
  42.   {if($row[0] == "adresse" or $row[0] == "description" )
  43.    {$p = $row[0];
  44.    $champs[$p] = array();
  45.    $champs[$p][1] = array();
  46.    $champs[$p][2] = array();
  47.    $champs[$p][1][0] = "";
  48.    $champs[$p][2][0] = "";
  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.  var k =0;
  64.  // -->
  65.  /* ]]> */
  66.  </script>
  67. </head>
  68. <body style="background:lightgreen" link=darkgreen vlink=green>
  69.  <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgprod">
  70.  <legend>Sélectionnez un champs puis une condition et une valeur </legend>
  71.  <select name="champs0" id="champs0" onchange="changeValeur(tab,this.value,k);">
  72.    <option value="vide">- - - Choisissez un champs - - -</option>
  73.   <?php
  74.   /* Construction de la première liste : on se sert du tableau PHP */
  75.   $nbr = count($champs);
  76.   foreach($champs as $nr => $nom)
  77.    {$ch = "$nr"."0";
  78.    ?>
  79.    <option value="<?php echo($ch); ?>"><?php echo($nr); ?></option>
  80.    <?php
  81.    }
  82.   ?>
  83.  </select>
  84.   <span id="blocValeur"></span>
  85.  
  86.   <br/><br/>
  87.   <input type="submit" name="ok" id="ok" value="Envoyer" />
  88.  </form>
  89. </body>
  90. </html>


 
fichiers javascript :

Code :
  1. /* On crée la fonction qui va construire la seconde liste déroulante */
  2. function changeValeur(tab, champs_reg, k)
  3. {var reg = /^[a-zA-Z]+/;
  4. var champs = reg.exec(champs_reg);
  5. if(champs != "vide" && champs != "description" && champs != "adresse" )
  6.  {var nbd = tab[champs][1].length;
  7.  form_d += '<select name="condition" id="condition" > <option value="vide">- - - Choisissez une condition - - -</option> <option value="egal">égal</option> <option value="sup">supérieur à </option> <option value="inf">inférieur à</option> <option value="sup_eg">supérieur ou égal à</option> <option value="inf_eg">inférieur ou égal à</option> <option value="plus_gd"> le plus grand </option> <option value="plus_petit">le plus petit</option> </select> ';
  8.  form_d  += '<select name="valeur" id="nom_valeur" onchange="operateur(tab, this.value,k);">';
  9.  form_d  += '<option value="vide">- - - Choisissez une valeur - - -</option>';
  10.  for(var j = 0;  j < nbd; j++)
  11.   {if (tab[champs][1][j] != undefined)
  12.    {form_d += '  <option value="'+ tab[champs][1][j] +k+'">'+ tab[champs][2][j] +'<\/option>';
  13.    }
  14.   }
  15.  form_d += '<\/select>';
  16.  }
  17.     else
  18.     {if(champs == "adresse" || champs == "description" )
  19.  {var form_d = '<select name="condition" id="condition" > <option value="vide">- - - Choisissez une condition - - -</option> <option value="contient">contient</option> <option value="contient_pas"> ne contient pas </option> </select> ';
  20.  form_d  += '<input type="text" name = "'+ champs +k+'" value = "Tapez votre recherche ici" size = "50" onchange="operateur(tab, this.value,k);" />';
  21.  }
  22. else
  23.  {form_d = "";
  24.  }
  25.     }
  26. form_d += 'k : '+k+' <br/><br/><span id="blocOperateur"></span>';
  27.     document.getElementById("blocValeur" ).innerHTML = form_d;
  28. }


 

Code :
  1. function operateur(tab, champs,k)
  2. {k++;
  3. if(champs != "vide" )
  4.  {var form_d = 'k : '+k+' Choisissez une condition si vous voulez rajouter un élément de recherche <br/>';
  5.  form_d += '<select name="operateur" id="operateur" onchange="appChamps(tab,this.value,k);"> <option value="vide"></option> <option value="et">ET</option> <option value="ou">OU</option> </select> ';
  6.  }
  7.     else
  8.  {var form_d = "";
  9.  }
  10. form_d += '<br/><br/><span id="blocChamps"></span>';
  11.     document.getElementById("blocOperateur" ).innerHTML = form_d;
  12. }


 

Code :
  1. function appChamps(tab, champs,k)
  2. {if(champs != "vide" )
  3.  {var form_d = '<select name="champs" id="nom_champs" onchange="changeValeur(tab, this.value,k);">';
  4.  form_d  += '<option value="vide">- - - Choisissez un champs - - -</option>';
  5.  for (i in tab)
  6.   {form_d += '<option value="'+i+k+'">'+i+'</option>';
  7.   }
  8.  form_d += '</select> ';
  9.  }
  10.     else
  11.  {var form_d = "";
  12.  }
  13. form_d += '<br/><br/><span id="blocValeur"></span>';
  14.     document.getElementById("blocChamps" ).innerHTML = form_d;
  15. }


 
Merci à tous ceux qui ont pris la peine de me lire !


Message édité par Tribalnanasss le 08-07-2010 à 18:41:26
Reply

Marsh Posté le 08-07-2010 à 18:40:18   

Reply

Sujets relatifs:

Leave a Replay

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