Bonjour à tous,
J'ai transformé mon formulaire d'inscription en utilisant 2x 2listes déroulantes liées alimentées par bdd. Elles fonctionnent correctement, mais j'ai un problème d'affichage des valeurs sélectionnées dans mon formulaire de confirmation ("categorie","selection" et "province","ville").En effet,lorsque je fait"Envoyer" Ces dernières restent vides.Il me manque certainement un code "selected"
Je serais heureuse d'avoir votre aide pour résoudre ce problème.
Ci-joint mon fichier d'inscription.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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
<?php
// connection à la DB
	include('../../../Program Files/EasyPHP-5.3.3.1/www/infopub/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']['cat'] = $cat = isset($_POST['cat']) && trim($_POST['cat']) != '' ? Verif_magicquotes(trim($_POST['cat'])) : 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['nom_province']) && trim($_POST['nom_province']) != '' ? Verif_magicquotes(trim($_POST['nom_province'])) : 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
 
    $_SESSION['post_form']['prenom'] = $prenom = isset($_POST['prenom']) && trim($_POST['prenom']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['prenom']))) : null;//ucfirst pour convertir le première lettre en majuscule
 
    $_SESSION['post_form']['numtel'] = $numtel = isset($_POST['numtel']) && trim($_POST['numtel']) != '' ? Verif_magicquotes(trim($_POST['numtel'])) : null;
 
 
 
    if (!isset($motdepasse))
	    {
		     $message[] = 'Veuillez choisir votre mot de passe';
		}  
 
 
 
     if (isset($nom))
        {
            if (! preg_match('#^[a-zéèàçïêë ]{3,12}$#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'; 
        }
 
     if (isset($prenom))
        {
            if (! preg_match('#^[a-zéèàçïêë ]{3,12}$#i',$prenom)) 
                {
                    $message[] = 'Le prénom "'.$prenom.'" n\'est pas valide. Minimum 3 lettres, maximum 12. Chiffres non autorisés. Recommencez !';   
                }  
        }
    else    
        { 
            $message[] = 'Veuillez indiquer votre prénom';
        }
 
 
    if (isset($numtel))     
        {
            if (!(preg_match("#^0[1-8]([-. ]?[0-9]{2}){4}$#", $numtel) || preg_match("#^0[1-8]([-. ]?[0-9]{1}){7}$#", $numtel)))
                {
                    $message[] = 'Le numéro de télélphone "'.$numtel.'" n\'est pas valide. Recommencez !';   
                }
        }
    else
        {
            $message[] = 'Veuillez indiquer un numéro de téléphone';        
        }
 
 
 
 // requête pour vérifier si le mot de passe est déjà pris :
 
 
	  if (isset($motdepasse))
		{
		 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: confirm1.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=iso-8859-1">
 	<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
 
	<script type="text/javascript">
	/* Initialisation XMLHttpRequest (obligatoire) */
	function getXhr(){
		var xhr = null; 
		if(window.XMLHttpRequest) // Firefox et autres
		   xhr = new XMLHttpRequest(); 
		else if(window.ActiveXObject){ // Internet Explorer 
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else { // XMLHttpRequest non supporté par le navigateur 
			alert ("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
			xhr = false; 
		} 
		return xhr;
	};
 
 
	/* Changer la liste "Selection" après choix dans la liste "Categorie" */
	function changeSelectionParCategorie(id_cat1,id_div2){
		var id_cat1; // valeur de l option ("Categorie") choisie
		var id_div2; // id du div dans lequel on remplira la liste des "selections"
 
		var xhr = getXhr();
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200)
			{
				texthtml = xhr.responseText;
				// innerHTML va ajouter les options a la liste des "selections"
				document.getElementById(id_div2).innerHTML = texthtml;
			}
		}
		// on defini la methode (post) + le fichier de traitement + asynchrone (true)
		xhr.open("POST","ajaxSelectionsFromCategorie.php",true);
		// ne pas oublier ça pour le post
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		// on poste les parametres a transmettre au fichier qui fera le traitement
		xhr.send("idcatselected="+id_cat1);
	};
	</script>
 
</head>
 
<body>
 
	<?php  if (isset($_SESSION['post_form']['cat']))
{
$value_select_1 = $_SESSION['post_form']['cat'];
$value_select_2 = isset($_SESSION['post_form']['selection'])? $_SESSION['post_form']['selection'] : null;
}
 
?>
<div style="width:48em;margin:auto; border:1px solid black;padding:1em">
	<form action="#" method="post" id = "form_identification">	
 
			<legend>En 1:Choisissez d'abord une catégorie--->EN 2: une sélection.---></legend> 
<BR >
			<label>1.Catégories : </label>
			<select id="id_categorie" name="categorie" onChange="changeSelectionParCategorie(this.options[this.selectedIndex].value,'iddiv2');">
			<!-- on appelle la fct sur le onchange (valeur-choisie, id-du-div-à-remplir) -->
				<option value="-1">Choisir une catégorie</option>
 
<?php
			// requete : liste de toutes les categories
				$cat_sql = "SELECT * FROM T_CATEGORIES ORDER BY nom_categorie;";
				$cat_res = mysql_query($cat_sql) or die("Erreur de connexion au serveur SQL");
				while($cat_row = mysql_fetch_assoc($cat_res))
				{
?>
				<option value="<?php echo $cat_row['id_categorie']; ?>"><?php echo $cat_row['nom_categorie']; ?></option>
 
<?php
				}
?>
			</select>	
 
			<label>2.Sélection : </label>
			<span id="iddiv2" style="display:inline;"><!-- c'est ici que par innerHTML AJAX va ecrire la liste2 -->
			<!-- on peut mettre d abord une option "par defaut" : -->
			<select id="idid_selection" name="selection">
				<option value="-1">Choisissez d'abord une catégorie</option>
			</select>
			</span>				
 
	</form>
 
	<?php
// connection à la DB
	include('../../../Program Files/EasyPHP-5.3.3.1/www/infopub/connect-bd-provinces.php'); 
?>
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8 ">
 	<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
 
	<script type="text/javascript">
	/* Initialisation XMLHttpRequest (obligatoire) */
	function getXhr(){
		var xhr = null; 
		if(window.XMLHttpRequest) // Firefox et autres
		   xhr = new XMLHttpRequest(); 
		else if(window.ActiveXObject){ // Internet Explorer 
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else { // XMLHttpRequest non supporté par le navigateur 
			alert ("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
			xhr = false; 
		} 
		return xhr;
	};
 
	/* Changer la liste "Ville" après choix dans la liste "Province" */
	function changeVilleParProvince(id_province1,id_div3){
		var id_province1; // valeur de l option ("Province") choisie
		var id_div3; // id du div dans lequel on remplira la liste des "Villes"
 
		var xhr = getXhr();
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200)
			{
				texthtml = xhr.responseText;
				// innerHTML va ajouter les options a la liste des "Villes"
				document.getElementById(id_div3).innerHTML = texthtml;
			}
		}
		// on defini la methode (post) + le fichier de traitement + asynchrone (true)
		xhr.open("POST","ajaxVillesFromProvinces.php",true);
		// ne pas oublier ça pour le post
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		// on poste les parametres a transmettre au fichier qui fera le traitement
		xhr.send("idprovinceselected="+id_province1);
	};
	</script>
</head>
 
<body>
	<form action="#" method="post" id = "form_identification">
 
		<BR>
 
			<legend>En 3:Choisissez une province--->4:Enfin une ville(4)</legend> 
       <BR >
			<label>3.Provinces: </label>
 
			<select id="id_province" name="province" onChange="changeVilleParProvince(this.options[this.selectedIndex].value,'iddiv3');">
			<!-- on appelle la fct sur le onchange (valeur-choisie, id-du-div-à-remplir) -->
				<option value="-1">Choisir une province</option>
<?php			// requete : liste de toutes les provinces
				$province_sql = "SELECT * FROM province ORDER BY nom_province;";
				$province_res = mysql_query($province_sql) or die("Erreur de connexion au serveur SQL");
				while($province_row = mysql_fetch_assoc($province_res))
				{
?>
				<option value="<?php echo $province_row['id_province']; ?>"><?php echo $province_row['nom_province']; ?></option>
 
<?php
				}
?>
			</select>	
 
			<label>4.Villes : </label>
 
			<span id="iddiv3" style="display:inline;"><!-- c'est ici que par innerHTML AJAX va ecrire la liste2 -->
			<!-- on peut mettre d abord une option "par defaut" : -->
			<select id="idid_ville" name="ville">
				<option value="-1">Choisissez d'abord une province</option>
			</select>
			</span>	
 
 
 
 
 
<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>
				<label for="prenom"> Pr&eacute;nom :</label>
				<input type="text" id="prenom" name="prenom" value="<?php echo (isset($_SESSION['post_form']['prenom'])) ? $_SESSION['post_form']['prenom'] : '' ?>" />
			</p>
 
 
 
			<p>
				<label for="numtel"> N&deg;de t&eacute;l&eacute;phone :</label>
				<input type="text" id="numtel" name="numtel" value="<?php echo (isset($_SESSION['post_form']['numtel'])) ? $_SESSION['post_form']['numtel'] : '' ?>" />
 
			</p>
 
 
 
 
		<p style="margin-top:1.5em">
			<input name = "envoyer" value = "Envoyer" type = "submit"/>
		  </p>	  
 
		</div>
 
 
 
	<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>
</htlm

Sincères remerciements
Claudine