Bonjour à tous,
J'ai suivi le tutoriel suivant : http://ars69-techno.over-blog.com/20...dynamique.html à partir duquel j'ai fait 3 listes déroulantes liées.
Le système de listes liées fonctionne parfaitement et mes données sont bien récupérées sur ma BDD, par contre je n'arrive pas à récupérer les données sélectionnées sur ma 3ème liste déroulante au travers d'un "POST".
Le système de listes liées est composé de 5 fichiers :
- Le fichier "index.html" qui contient les 3 listes et un bouton d'envoi des données de la 3ème liste au fichier "consult.php"
- Le fichier "jquery-1.7.1.min.js" appelé dans le fichier "index.html"
- Le fichier "liste.js" appelé dans le fichier "index.html" qui correspond au script jquery des 3 listes liées
- Le fichier "liste.php" appelé dans le fichier "liste.js" pour interroger la BDD
- Le fichier "consult.php" qui récupère et affiche le POST envoyé par "index.html"
Mon problème doit venir d'une fonction manquante dans "liste.js" mais je ne maitrise pas javascript et si j'essai de récupérer la variable localite_trois dans "consult.php", j'ai un message d'erreur "variable non définie".
Code fichier index.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 <script type="text/javascript" src="jquery-1.7.1.min.js"></script> <script type="text/javascript" src="liste.js"></script> <form action="consult.php" method="Post"> <select id="localite_un"> <option value="">Sélectionner localité un</select> </select> <select id="localite_deux"> <option value="">Sélectionner localité deux</select> </select> <select id="localite_trois"> <option value="">Sélectionner localité trois</select> </select> <input type="submit" value="Afficher la localité trois"/> </form>
Code fichier liste.js :
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 // JavaScript Document $(document).ready(function() { var $localite_un = $('#localite_un'); var $localite_deux = $('#localite_deux'); var $localite_trois = $('#localite_trois'); // chargement de la liste de localité un $.ajax({ url: 'liste.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 $('#localite_un').append('<option value="'+ index +'">'+ value +'</option>'); }); } }); // à la sélection de la localité un dans la liste $localite_un.on('change', function() { var val = $(this).val(); // on récupère la valeur de la localité un if(val != '') { $localite_deux.empty(); // on vide la liste de localité deux $localite_deux.append('<option value="">Choisir la localité deux</option>'); $.ajax({ url: 'liste.php', data: 'localite_un='+ val, // on envoie $_GET['localite_un'] dataType: 'json', success: function(json) { $.each(json, function(index, value) { $localite_deux.append('<option value="'+ index +'">'+ value +'</option>'); }); } }); } else { $localite_deux.empty(); $localite_deux.append('<option value="">Choisir la localité deux</option>'); $localite_trois.empty(); // on vide la liste de localité deux $localite_trois.append('<option value="">Choisir la localité trois</option>'); } }); // à la sélection de la localité deux dans la liste $localite_deux.on('change', function() { var val = $(this).val(); // on récupère la valeur de la localité deux if(val != '') { $localite_trois.empty(); // on vide la liste de localité trois $localite_trois.append('<option value="">Choisir la localité trois</option>'); $.ajax({ url: 'liste.php', data: 'localite_deux='+ val, // on envoie $_GET['localite_deux'] dataType: 'json', success: function(json) { $.each(json, function(index, value) { $localite_trois.append('<option value="'+ index +'">'+ value +'</option>'); }); } }); } else { $localite_trois.empty(); $localite_trois.append('<option value="">Choisir la localité trois</option>'); } }); });
Code fichier liste.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 <?php // Vérification des paramètres d'accès au fichier liste.php if(isset($_GET['go']) || isset($_GET['localite_un']) || isset($_GET['localite_deux'])) { // connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=localite', 'root', ''); } catch(Exception $e) { exit('Impossible de se connecter à la base de données.'); } $json = array(); if(isset($_GET['go'])) { // requête qui récupère les localités un $requete = "SELECT * FROM localite_un ORDER BY localite_un ASC"; // exécution de la requête $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo())); // Création de la liste while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) { // je remplis un tableau et mettant l'id en index $json[$donnees["id_localite_un"]][] = utf8_encode($donnees["localite_un"]); } } elseif(isset($_GET['localite_un'])) { // requête qui récupère les localités un $requete = "SELECT * FROM localite_deux WHERE id_localite_un = '".$_GET['localite_un']."' ORDER BY localite_deux ASC"; // exécution de la requête $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo())); // Création de la liste while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) { // je remplis un tableau et mettant l'id en index $json[$donnees["id_localite_deux"]][] = utf8_encode($donnees["localite_deux"]); } } elseif(isset($_GET['localite_deux'])) { // requête qui récupère les localités un $requete = "SELECT * FROM localite_trois WHERE id_localite_deux = '".$_GET['localite_deux']."' ORDER BY localite_trois ASC"; // exécution de la requête $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo())); // Création de la liste while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) { // je remplis un tableau et mettant l'id en index $json[$donnees["id_localite_trois"]][] = utf8_encode($donnees["localite_trois"]); } } // envoi du résultat au success echo json_encode($json); } ?>
Code fichier consult.php :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?php $requete = $_POST["localite_trois"]; echo $requete; ?>
Merci d'avance pour votre aide
Bonne soirée
Partager