pd de liste deroulante: le choix ne reste pas

pd de liste deroulante: le choix ne reste pas - PHP - Programmation

Marsh Posté le 05-07-2005 à 10:52:55    

j'ai une liste deroulante pour selectionner une ville et apres en fonctionne de cette premiere selection, une deuxieme liste s'affiche. Le probleme et que lorsque je selectionne la premiere ville( la liste venant d'une bdd mysql fonctionne tres bien), le choix est pris en compte mais la page redevient comme au depart, la selection ne reste pas affiché et encor plus ennuyeux, les autres champs rentrés sont effacés.
Ou est l'erreur? voici un morceau de mon code:

Code :
  1. <?php
  2. echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" );
  3. @session_start();
  4. include("special.inc" );
  5. /* On récupère si elle existe la valeur de la ville de depart envoyée par le formulaire */
  6. $idr = isset($_POST['villedepart'])?$_POST['villedepart']:null;
  7. ?>
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  9. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  10. <html>
  11. <head>
  12. <title>Fiche de frais de déplacements</title>
  13. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  14. <script type="text/javascript" src="testchamp.js"></script>
  15. </head>
  16. <body>
  17. <?php
  18. /* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
  19. *  car on aura besoin de la connexion un peu plus loin dans le script */
  20. if($connexion != false)
  21. {
  22. $base ="stlor_db";
  23.     $choixbase = mysql_select_db($base, $connexion);
  24.     $sql1 = "SELECT DISTINCT villedepart FROM distance ORDER BY villedepart;";
  25.     $rech_villes = mysql_query($sql1);
  26.     $ville = array();
  27.     /* On active un compteur pour les villes */
  28.     $nb_villes = 0;
  29.     if($rech_villes != false)
  30.     {
  31.         while($ligne = mysql_fetch_assoc($rech_villes))
  32.         {
  33.             array_push($ville, $ligne['villedepart']);
  34.             /* On incrémente de compteur */
  35.             $nb_villes++;
  36.         }
  37.     }
  38.     ?>
  39. <div align="center">
  40.   <p><b></b>Fiche de frais de d&eacute;placements</b></p>
  41.   <p>&nbsp;</p>
  42. </div>
  43.   <p align="left">
  44. <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" name="fichedep" id="fichedep" onSubmit="return testsubmit()">
  45.   <p>Période :
  46.     <input type="text" name="periode" value="">
  47. </p>
  48. <!-- tableau d'enregistrement des valeurs-->
  49. <table width="100%" border="1">
  50.     <tr>
  51.  <th scope="col">Date</th>
  52.        <th scope="col">Ville D&eacute;part </th>
  53.        <th scope="col">Ville Arriv&eacute;e </th>
  54.        <th scope="col">Aller/retour</th>
  55.        <th scope="col">Motif</th>
  56.        <th scope="col">Tarif</th>
  57.        <th scope="col">Km</th>
  58.  <th scope="col">Total</th>
  59.     </tr>
  60.     <tr>
  61.  <td><input size=10 name="datage" maxlength="100"></td>
  62.  <td><select name="villedep" id="villedep" onchange="document.forms['fichedep'].submit();">
  63.         <option value="-1">- Choisissez une ville -</option>
  64.      <?php
  65.       for($i = 0; $i < $nb_villes; $i++)
  66.       {
  67.  ?>
  68.       <option value="<?php echo($ville[$i]); ?>"<?php echo((isset($idr) && $idr == $ville[$i])?" selected=\"selected\"":null); ?>><?php echo($ville[$i]); ?></option>
  69.  <?php
  70.       }
  71.      ?>
  72.       </select> <input type="submit" value="Ajouter" onClick="gopage('villeenregistre.php')"></td>
  73.  <td>
  74.  <?php
  75.       mysql_free_result($rech_villes);
  76.    
  77.       if(isset($idr) && $idr != -1)
  78.       {
  79.        
  80.           $sql2 = "SELECT villearrivee FROM distance WHERE villedepart = ". $idr ." ORDER BY villearrivee;";
  81.           if($connexion != false)
  82.           {
  83.              $rech_villear = mysql_query($sql2, $connexion) or die ("requete villearrive impossible" );
  84.            
  85.              $nd = 0;
  86.            
  87.                 $nom_villear = array();
  88.            
  89.              while($ligne_ar = mysql_fetch_assoc($rech_villear))
  90.              {
  91.                   array_push($nom_villear, $ligne_ar['villearrivee']);
  92.                  $nd++;
  93.              }
  94.            
  95.             ?>
  96.  
  97.   <select name="villear" id="villear">
  98.             <?php
  99.             for($d = 0; $d<$nd; $d++)
  100.             {
  101.             ?>
  102.      <option value="<?php echo($nom_villear[$d]); ?>"><?php echo($nom_villear[$d]." " );            ?></option>
  103.             <?php
  104.             }
  105.   ?>
  106.   </select>
  107.   <?php
  108.          }
  109.           mysql_free_result($rech_villear);
  110.       }
  111.   ?>
  112.     <input type="submit" value="Ajouter" onClick="gopage('villeenregistre.php')" ></td>
  113.  <td><input type="radio" id="r3" name="r3" value="1" onClick="fradio1(3,this.value)">Aller<br>
  114.   <input type="radio" id="r3" name="r3" value="2" onClick="fradio1(3,this.value)">Aller Retour</td>
  115.  <td><input type="text" size="10" name="motif" maxlength="200"></td>
  116.  <td><input type="radio" id="tarif" name="r1" value="1" onClick="fradio1(1,this.value)">0.30€<br>
  117.   <input type="radio" id="tarif" name="r1" value="2" onClick="fradio1(1,this.value)">0.35€</td>
  118.  <td><input type="text" id="km" size="10" name="km" maxlength="200"></td>
  119.  <td><input type="button" value="Calculer" onClick="launch(this.form)"></td>
  120. </table>
  121.   <p><br>
  122.     <input type="submit" value="Retour" onClick="gopage('identite.php')">     
  123.     <input type="submit" value="Valider" onClick="gopage('nouveaupdf.php')">
  124.   </p>
  125. <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
  126. <br>
  127. </font>
  128. </p>
  129. </form></p>
  130. <?php
  131.     /* Terminé, on ferme la connexion */
  132.     mysql_close($connexion);
  133. }
  134. ?>
  135. </body>
  136. </html>


Message édité par maire106 le 05-07-2005 à 10:56:26
Reply

Marsh Posté le 05-07-2005 à 10:52:55   

Reply

Marsh Posté le 05-07-2005 à 11:14:58    

bon j'ai pas lu ton code c'est un peu long, mais pour que la sélection d'un menu déroulant reste après que l'action du formulaire ait été effectuée, il suffit d'une petite fonction qui teste les valeurs des balises <option> en les comparant à la valeur de la variable POST ou GET correspondante
 
du style
fonction select($variable,$valeur)
(
 
if ($variable == $valeur)
(
$attribut = 'selected = "selected"';
)
else
(
$attribut ='';
)
)
 
bon faut remplacer les ( ) par des accolades mais la je suis en stage et je bosse sur MAC et j'ai pas encore trouver la touche pour les faire :p

Reply

Marsh Posté le 05-07-2005 à 11:43:45    

d'apres ce que tu m'as dis, j'ai pu identifeir que l'erreur doit etre a la ligne 72 mais je sais pas comment la corriger

Reply

Marsh Posté le 05-07-2005 à 22:03:11    

avec ma fonction dans ton script ça donnerais ça :  
 

Code :
  1. <?php
  2. $villedep = $_POST['villedep'];
  3.   for($i = 0; $i < $nb_villes; $i++)
  4.   {
  5. ?>
  6. <option value="<?php echo($ville[$i]); ?>" <?PHP echo select($villedep,$ville[$i]); ?>><?php echo($ville[$i]); ?></option>
  7. <?php
  8.   }
  9. ?>

Reply

Marsh Posté le 06-07-2005 à 10:08:25    

ca marche pas,ca me bloque la suite, j'ai plus d'affichage de ma liste

Reply

Marsh Posté le 06-07-2005 à 10:34:43    

vérifie  bien ton code html, peut etre as-tu oublié de fermer une balise "select"

Reply

Sujets relatifs:

Leave a Replay

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