Bonjour à tous,
Je viens de créer un formulaire d'inscription avec 2 listes déroulantes liées et tout fonctionne normalement ;
Viens d'apparaître un détail peu pratique puisque:
Si par hasard on introduit un mot de passe ou nom pas conforme, ces derniers sont signalés par un code d'erreur avec pour résultat la perte de toutes mes données choisies dans mes listes d'où le travail fastidieux de devoir resélectionner toutes les données.
Je suppose qu'il existe un code JS ou PHP adapté à cette situation.
Si une âme charitable peut se pencher sur ce problème, j'en serais très heureuse et à toutes fins utiles je joins le fichier:
Code php:
Code php : 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?php
// connection à la DB
	include('./connect-bd.php'); 
?>
<?php
 if (!session_id()) session_start();//déclare l'ouverture d'une session si aucune n'a été déclarée auparavant.
 
 if (isset($_POST['envoyer'])) 
{
     function Verif_magicquotes ($chaine)// fonctin qui applique stripslashes si get_magic_quotes_gpc() est activé
    {
		if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
 
		return $chaine;
    } 
     $message = array();// Pour enregistrer les messages d'information
    $_SESSION['post_form']['message'] =& $message;// avec & on assigne $message à $_SESSION['post_form']['message'] c.a.d. tout changement dans $message sera répercuté dans $_SESSION['post_form']['message']
 
	$_SESSION['post_form']['motdepasse'] = $motdepasse = isset($_POST['motdepasse']) && trim($_POST['motdepasse']) != '' ? Verif_magicquotes(trim($_POST['motdepasse'])) : null; 
 
	$_SESSION['post_form']['categorie'] = $categorie = isset($_POST['categorie']) && trim($_POST['categorie']) != '' ? Verif_magicquotes(trim($_POST['categorie'])) : null;  
 
 	$_SESSION['post_form']['selection'] = $selection = isset($_POST['selection']) && trim($_POST['selection']) != '' ? Verif_magicquotes(trim($_POST['selection'])) : null;
	$_SESSION['post_form']['province'] = $province= isset($_POST['province']) && trim($_POST['province']) != '' ? Verif_magicquotes(trim($_POST['province'])) : null;
 
	$_SESSION['post_form']['ville'] = $ville = isset($_POST['ville']) && trim($_POST['ville']) != '' ? Verif_magicquotes(trim($_POST['ville'])) : null; 
 
 $_SESSION['post_form']['nom'] = $nom = isset($_POST['nom']) && trim($_POST['nom']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['nom']))) : null;//ucfirst pour convertir le première lettre en majuscule
 
      if (!isset($motdepasse))
	    {
		     $message[] = 'Veuillez choisir votre mot de passe';
		}  
 
     if (isset($nom))
        {
            if (! preg_match('#^[a-zéèàçïêë \']{3,40}$#i',$nom))    
                {
                    $message[] = 'Le nom "'.$nom.'" n\'est pas valide. Minimum 3 lettres, maximum 12. Chiffres non autorisés. Recommencez !';   
                }
        }
    else    
        {
             $message[] = 'Veuillez indiquer votre nom'; 
        }
            //---------
 
 
	// requête pour vérifier si le mot de passe est déjà pris :
 
 
	 //---------------------
	if (isset($motdepasse))
	{
		if (!preg_match("#^[0-9a-zA-Z]+$#", $motdepasse))
		{
			$message[] = 'Le mot de passe ne doit contenir que des caractères alphanumériques (6 à 12 caractères).';
		} elseif (!preg_match("#^[0-9a-zA-Z]{6,12}$#", $motdepasse))
		{
			$message[] = 'Le mot de passe doit contenir entre 6 et 12 caractères alphanumériques.';
		} else 
 
		 try
			 {
			  $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			  $bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '', $pdo_options);
 
			  $req = $bdd->prepare('SELECT count(*) as nb FROM coordonnees WHERE motdepasse = ?'); 
 
			  $req->execute(array($motdepasse));
 
 
			  $result = $req->fetch(PDO::FETCH_OBJ);
 
			  if($result->nb != 0)
				  {
				  	$message[] = 'Ce mot de passe est déjà utilisé';
				  }			
			 }
		catch(Exception $e)
		   	 {
				die('Erreur : '.$e->getMessage());//
		   	 }
		}		 
 
 
    if (isset($message) && count($message) == 0)
        {
        header('Location:confJS.php');// envoi à la page confirmation "Confirm.php"
			exit;
		}		
}              
?>  
 
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body bgcolor="#33FFCC"><center>
 
 <script type="text/javascript"> 
function generation_liste2(id_lire,id_ecrire) { <!-- Fonction pour le second menu deroulant liéé au choix dans le premier -->
	var liste2="";	
	//on commence par effacer eventuellement la deuxieme liste au cas ou elle serait affichée, si on reclique sur choisissez
	document.getElementById(id_ecrire).innerHTML="";
 
	//on lit le choix dans liste 1
	var choix_categorie=document.getElementById(id_lire).value; 
 
	switch (choix_categorie) { 
		//on peut tout mettre dans le switch case
		case '0' : return ; break;<!-- si pas de choix retourne rien -->
		<!-- autre choix possible -->
		case 'Aliments' : var tab = new Array ('Bétails','Oiseaux','Chiens/chats','Poissons'); break;
		case 'Animaux' : var tab = new Array ('Nourriture bétails','Alimentation chiens/chats','Vétérinaire'); break;
 
		}
		//generation de la deuxieme liste
	liste2 += '<select name="selection">';
	for (j=0;j<tab.length;j++) { 
		liste2 += '<option value="'+tab[j]+'">'+tab[j]+'</option>';
	}
	liste2 += '</select>';
	//ecriture de la deuxieme liste dans le div la page
	document.getElementById(id_ecrire).innerHTML=liste2;
}
</script>
 
<?php
// connection à listevillesparProvince
	include('./listevillesparProvince.php'); 
 
?>
 
</script>
</head>
<body>
 
<p style="font-size:0.9em; font-style:italic;margin-bottom:1em">Cochez une des cat&eacute;gories ci-dessous, puis une option dans la liste qui s'affichera en fonction de votre choix :
</p>
<form name="form1" method="post" action="">
	<select name="categorie" id="id_liste_categorie" onChange="generation_liste2('id_liste_categorie','id_liste2');">
 
		<option value="0">-- choisissez --</option>
 
		<option value="Aliments">Aliments</option>
		<option value="Animaux">Animaux</option>
 
	</select>
	<div id="id_liste2"><!-- la va etre ecrite la deuxieme liste --></div>
<label>Choisissez une province dans la liste ci-dessous, puis une ville dans la 2ème liste qui va s'ouvrir </label> <BR>
<form name="form2" method="post" action="">
	<select name="province" id="id_liste_province" onChange="generation_liste4('id_liste_province','id_liste4');">
		<option value="0">-- choisissez --</option>
		<option value="Hainaut">Hainaut</option>
		<option value="Namur">Namur</option>
		<option value="Brabant wallon">Brabant wallon</option>
		<option value="Luxembourg">Luxembourg</option>
		<option value="Liège">Liège</option>
	</select>
	<div id="id_liste4"><!-- la va etre ecrite la deuxieme liste --></div>
 
 
<BR>
				<label for="motdepasse"> Mot de passe :</label>
				<input type="text" id="motdepasse" name="motdepasse" value="<?php echo (isset($_SESSION['post_form']['motdepasse'])) ? $_SESSION['post_form']['motdepasse'] : '' ?>" />
</p>
 
			<p>
				<label for="nom"> Nom :</label>
				<input type="text" id="nom" name="nom" value="<?php echo (isset($_SESSION['post_form']['nom'])) ? $_SESSION['post_form']['nom'] : '' ?>" />
			</p>
 
		<p style="margin-top:1.5em">
			<input name = "envoyer" value = "Envoyer" type = "submit"/>
	  </p>	  
 
	</form>	  
	<div style="font-size:0.8em; font-weight:bold">
	<?php
	if(isset($_SESSION['post_form']['message']) && count($_SESSION['post_form']['message']) > 0)
	{
		foreach($_SESSION['post_form']['message'] as $value) echo '<p>- '.$value.'</p>';
	}
	?>
 
	</div>
	</form>
</body>
</html>
Sincères remerciements
Claudine