Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1541 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Liste déroulante avec onchange et conservation des données précédentes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Liste déroulante avec onchange et conservation des données précédentes

n°1299739
John-Delux​e
Posté le 06-02-2006 à 12:48:33  profilanswer
 

Bonjour à tous.
 
 
Je souhaite utiliser une liste déroulante avec un reload de la page au moyen d'un "onchange". Voici mon bout de code de test :  
 
<form action="" method=post>
<br><input type="text" name="test"><br>
<select onchange="location=this.options[this.selectedIndex].value;">
 <option value='#'>Choix multiple</option>
 <option value="?nbpersonne=1">1</option>
 <option value="?nbpersonne=2">2</option>
 
</select>
<?
$nbpersonne = $_GET[nbpersonne];
for ($i=1; $i <= $nbpersonne; $i++) {
 echo "<br>Personne".$i."<input type=\"text\" name=\"email".$i."\">";
}
?>
<br><input type="submit" name="valid" value="Valider">
</form>

 
Or lorsque la page se relance, la saisie de la text box précédente disparaît et je souhaiterais qu'elle soit conservée. Avez-vous une solution à mon problème? (il n'y a pas de validation du formulaire donc pas moyen de mettre un "value=$_POST[test]" dans l'input)
 
Merci d'avance

mood
Publicité
Posté le 06-02-2006 à 12:48:33  profilanswer
 

n°1299745
the_bigboo
Posté le 06-02-2006 à 12:50:42  profilanswer
 

1 - On utilise les balise codes pour insérer du code :o ....
2 - Rien a voir avec le PHP , va voir du coté Javascript :jap:
3 - bonne journée :)
 
Edit :

Code :
  1. <script language="javascript" type="text/javascript">
  2. function ValiderListe(valeur)
  3.      {
  4.      location.href = '?nbpersonne=' + valeur ;
  5.      return true ;
  6.      }
  7. </script>
  8. <form action="" method="post" name="formulaire">
  9. <br><input type="text" name="test"><br>
  10. <select name="nbpersonne" onchange="ValiderListe(this.options[this.selectedIndex].value)">
  11. <option value='#'>Choix multiple</option>
  12. <?php
  13. for ($i = 1 ; $i<= 2 ; $i++ )
  14.     {
  15.     if($_POST['nbpersonne'] == $i )
  16.          $selected = 'selected' ;
  17.     else
  18.          $selected = '' ;
  19.     echo "<option value='".$i."' ".$selected.">".$i."</option>\n ";
  20.     }
  21. ?>
  22. </select>
  23. <?
  24. $nbpersonne = $_GET[nbpersonne];
  25. for ($i=1; $i <= $nbpersonne; $i++) {
  26. echo "<br>Personne".$i."<input type=\"text\" name=\"email".$i."\">";
  27. }
  28. ?>
  29. <br><input type="submit" name="valid" value="Valider">
  30. </form>


Message édité par the_bigboo le 06-02-2006 à 13:00:07
n°1299787
John-Delux​e
Posté le 06-02-2006 à 13:52:44  profilanswer
 

Merci pour ta réponse (désolé pour le code, j'ai cherché mais bon...  :sarcastic: )
 
Mais j'ai du mal m'exprimer parce que, à vue de nez, ton code répond à la question, "comment fait-on pour que la valeur que j'ai sélectionnée dans la liste déroulante reste sélectionnée après la validation du formulaire?". Or ma question c'était plutôt : "Comment fait-on pour que la valeur de la zone de texte "test" reste saisie après le reload du au onchange?"
 
J'ai pensé à faire passer la valeur dans l'URL et la récupérer dans le tableau $_GET mais j'ai beaucoup de valeur de ce type à conserver et ça me donnerait une URL de fou dont je ne veux pas.  :) Y a-t-il une autre solution?

n°1299794
omega2
Posté le 06-02-2006 à 14:04:56  profilanswer
 

une solution : lancer l'envoie du formulaire au complet comme si c'était un envoie normal.
Aprés à toi de savoir faire la différence niveau php.

n°1299873
the_bigboo
Posté le 06-02-2006 à 15:44:59  profilanswer
 

omega2 a écrit :

une solution : lancer l'envoie du formulaire au complet comme si c'était un envoie normal.
Aprés à toi de savoir faire la différence niveau php.


Tout betement !

n°1299899
John-Delux​e
Posté le 06-02-2006 à 16:16:37  profilanswer
 

Si j'ai bien compris vous me recommandez de faire un formulaire contenant la liste déroulante du choix du nombre de personnes et un autre formulaire avec les zones de textes qui s'affichent en fonction de la réponse au 1er formulaire. Effectivement c'est une solution simple mais là encore, vous ne répondez pas à ma question...
 
Pour des raisons techniques, j'ai besoin de fonctionner avec cette architecture (tout sur la même page). Je ne cherche donc pas simplement une solution "qui marche" mais une solution "qui marche en utilisant 1 seul formulaire et un reload de ce formulaire lors du choix de nombre de personnes"
 
Si vous voulez un exemple => http://www.voyages-sncf.com/dynami [...] AGENCY=VSC, saisissez une gare de départ et/ou de destination et choisissez un nombre d'adultes (ex : 2). Vous verrez que la page se reload, que de nouveaux éléments de formulaire apparaissent mais que vos gares de départ et/ou de destination sont toujours saisies.

n°1299908
omega2
Posté le 06-02-2006 à 16:37:57  profilanswer
 

Qui a dit deux formulaires? :??:  
En javascript, tu peux forcer l'envoie d'un formulaire comme si la personne avait cliqué sur un bouton de validation. C'est tout ce qu'on te disait de faire.
Aprés, c'est sur que si tu veux garder toutes les valeurs, ca veut dire tout mettre dans le même formulaire et pas en plusieurs.

n°1299921
the_bigboo
Posté le 06-02-2006 à 16:56:37  profilanswer
 

ben oui , tu affiche une liste déroulante , et dessous avec un isset() , tu teste si la variable de ta liste existe deja, si elle existe , tu affiche ta deuxieme liste et pareil si tu as une troisieme liste !
 
Apres tu utilise If pour resélectionner ton option dans ta liste déroulante :

Code :
  1. for( $i=1 ; $i <= 10 ; $i++ ){
  2.      if( $_POST['liste1'] == $i)
  3.           echo "selected";
  4.     }


 
Le code est pas complet mais tu as compris l'idée hein ? :D

n°1301323
John-Delux​e
Posté le 08-02-2006 à 15:11:57  profilanswer
 

Ok et pouvez-vous me donner l'instruction qui permet de forcer l'envoi d'un formulaire en javascipt svp? :)

n°1301335
dwogsi
Défaillance cérébrale...
Posté le 08-02-2006 à 15:15:10  profilanswer
 

document.getElementById("id_form" ).submit()
ou
document.nom_form.submit()
ou si tu es 'dedans'
this.submit()
 
 
etc...


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Liste déroulante avec onchange et conservation des données précédentes

 

Sujets relatifs
Formulaire d'upload et de données[Excel] Présentation de données
Récupération des données d'un formulaireSauver facilement des données saisies
Liste des language de programmation[VC++] Liste
Pouvoir remplir une base de donnéesFaire apparaître des données Access sur une page HTML (via php ?)
interroger interpréteur, liste objets créés hors du script.Page d'accés aux données Access / Web
Plus de sujets relatifs à : Liste déroulante avec onchange et conservation des données précédentes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR