Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/03/2011, 20h56   #1
Candidat au titre de Membre du Club
 
Femme Tarah
Développeur Web
Inscription : décembre 2006
Messages : 21
Détails du profil
Informations personnelles :
Nom : Femme Tarah
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Service public

Informations forums :
Inscription : décembre 2006
Messages : 21
Points : 12
Points : 12
Par défaut formulaire avec champ texte et listes deroulantes liées

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.
Code :
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>
le fichier test.php (réduit au minimum) ne fait qu'afficher les valeurs envoyées par ce formulaire.
Code :
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;
?>
Y a t'il un moyen de ne pas perdre la valeur nom quand on passe aux listes déroulantes ?
Je vous remercie d'avance pour votre aide
tarah01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 18h26   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Bonsoir,

1- Ici c'est le forum javascript, donc on a besoin du code html généré mais pas du code php.
2-
Citation:
onChange="javascript : modifcombo()
onchange attend déjà d'instruction javascript donc inutile de mettre le motif "javascript :".
3- Pour pallier à ton problème, utilise AJAX pour lier les listes.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h40.


 
 
 
 
Partenaires

Hébergement Web