Bonjour,
J'ai un formulaire assez long que j'ai réduit volontairement.
Ce formulaire normalement comporte plusieurs champs textes et plusieurs listes déroulantes liées php/mysql.
Lorsque je commence par remplir le champ texte et que je passe ensuite aux listes déroulantes liées, le champ texte est vidée systématiquement, je suis obligée de ressaisir pour récupérer toutes les valeurs de ce formulaire.
Voici le code du fichier test1.php que j'ai repris sur un exemple du site developpez.com.
le fichier test.php (réduit au minimum) ne fait qu'afficher les valeurs envoyées par ce formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 <html> <?php $serveur = "localhost"; $admin = "root"; $mdp = ""; $base = "regions"; $connexion = mysql_pconnect($serveur, $admin, $mdp); ?> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language=javascript> function modifcombo(){ document.location.replace("test1.php?regions=" +document.form1.selectregion.value ); document.form1.selectregion.value = $regions; document.form1.nom.value=$nom; } </script> </head> <body> <?php if (isset($_GET['regions'])){ $regions = $_GET['regions']; } else { $regions = NULL; } print ">>>>" . $regions ."<<< <br> <br> <br>"; ?> <p>Essai formulaire</p> <form name="form1" method="post" action="test.php"> <table width="100%" border="1"> <tr><td>Nom </td><td><input name="nom" type="text" size="25"> </td></tr> <tr> <td><div align="right">region :</div></td> <td><select name="selectregion" onChange="javascript : modifcombo()"> <option value=""></option> <!-- Valeur vide pour forcer l'utilisateur à sélectionner --> <?php // Execution requête $ma_req = "SELECT * FROM region;"; $rech_reg = mysql_query($ma_req) or die("Selection table \"region\" impossible"); // Affectation des variables utilisées pour l'affichage if (mysql_num_rows($rech_reg)!=0) { // résultat non vide while ($une_ligne = mysql_fetch_array($rech_reg)) { $id_region = $une_ligne["id_region"]; $nom_region = $une_ligne["region"]; print "<option value=". $id_region; if ($id_region == $regions) { print " selected"; } print ">" .$nom_region."</option>"; } } ?> </select> </td> </tr> <tr> <?php // Execution requête $ma_req1 = "SELECT * FROM departement WHERE id_region = '$regions';"; $rech_dept = mysql_query($ma_req1) or die("Selection table \"departement\" impossible"); // Affectation des variables utilisées pour l'affichage if (mysql_num_rows($rech_dept)!=0) { ?> <td> <div align="right">departement : </div></td> <td><select name="selectdpt" > <option value="">Selectionnez un departement</option> <!-- Valeur vide pour forcer l'utilisateur à sélectionner --> <?php // résultat non vide while ($une_ligne = mysql_fetch_array($rech_dept)) { $id_departement = $une_ligne["id_departement"]; $nom_dept = $une_ligne["departement"]; print "<option value=".$id_departement.">" .$nom_dept ."</option>"; } ?> </select></td> <?php } ?> </tr> <tr><td colspan="2" align="center" > <input type="submit" name="validez" value="Valider" ></td></tr> </table> </form> </body> </html>
Y a t'il un moyen de ne pas perdre la valeur nom quand on passe aux listes déroulantes ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php $nom=$_POST["nom"]; $id_region=$_POST["selectregion"]; $id_depart=$_POST["selectdpt"]; echo $nom ." id region : ".$id_region." id_departement ".$id_depart; ?>
Je vous remercie d'avance pour votre aide
Partager