Bonjour,
Je cherche à réaliser un premier menu déroulant introduisant des régions et ensuite un deuxième qui n'affichera que les départements contenus dans cette région. Pour cela j'ai créé une base de données avec 2 tables, et les codes suivants, mais je n'arrive pas à faire fonctionner le tout. Pourriez-vous m'aider svp?
Voici le code HTML
Code html : 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 <!DOCTYPE html> <head> <meta content="fr" http-equiv="Content-Language" /> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>Exper'ICAM</title> <script type="text/javascript" src="test.js"></script> <script language="Javascript"> </script> </head> <body> <select id="regions" name="regions" > <option>Aquitaine</option> <option>Auvergne</option> <option>Bourgogne</option> <option>Bretagne</option> <option>Centre</option> <option>Champagne Ardenne</option> <option>Corse</option> <option>DOM/TOM</option> <option>Franche Comté</option> <option>Ile de France</option> <option>Languedoc Roussillon</option> <option>Limousin</option> <option>Lorraine</option> <option>Midi Pyrénées</option> <option>Nord Pas de Calais</option> <option>Haute Normandie</option> </select> <select id="departements" name="departements" action=france.php> </select> </body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> </body> </html>
Puis le code javascrip
Code javascript : 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 $(document).ready(function() { var $regions = $('#regions'); var $departements = $('#departements'); // chargement des régions $.ajax({ url: 'france.php', data: 'go', // on envoie $_GET['go'] dataType: 'json', // on veut un retour JSON success: function(json) { $.each(json, function(index, value) { // pour chaque noeud JSON // on ajoute l option dans la liste $regions.append('<option value="'+ index +'">'+ value +'</option>'); }); } }); // à la sélection d une région dans la liste $regions.on('change', function() { var val = $(this).val(); // on récupère la valeur de la région if(val != '') { $departements.empty(); // on vide la liste des départements $.ajax({ url: 'france.php', data: 'id_region='+ val, // on envoie $_GET['id_region'] dataType: 'json', success: function(json) { $.each(json, function(index, value) { $departements.append('<option value="'+ index +'">'+ value +'</option>'); }); } }); } }); });
Et enfin le 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 <?php if(isset($_GET['go']) || isset($_GET['id_region'])) { $json = array(); if(isset($_GET['go'])) { // requête qui récupère les régions $requete = "SELECT id, nom FROM regions ORDER BY nom"; } else if(isset($_GET['id_region'])) { $id = htmlentities(intval($_GET['id_region'])); // requête qui récupère les départements selon la région $requete = "SELECT id, nom FROM departements WHERE id_region = ". $id ." ORDER BY nom"; } // connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ''); } catch(Exception $e) { exit('Impossible de se connecter à la base de données.'); } // exécution de la requête $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo())); // résultats while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) { // je remplis un tableau et mettant l'id en index (que ce soit pour les régions ou les départements) $json[$donnees['id']][] = utf8_encode($donnees['nom']); } // envoi du résultat au success echo json_encode($json); } ?>
Quelqu'un serait-il capable de me dire où est/sont mon/mes erreurs?
en fait, je me rends compte qu'à aucun moment je ne valide les données du premier menu déroulant pour pouvoir former le deuxième mais je ne sais pas où ni comment le faire.
Merci beaucoup!
Partager