bonsoir, j ai récupéré sur le net un code ajax pour liée 3 liste, je l ai testé en local et il fonctionne, j ai voulu l adapté pour ma situation

a première vu j ai cru qu' il fonctionnait, cependant le résultat sur mon select 3 n est pas bon et je sais pas pourquoi

j ai mis ma liste liée en ligne pour que vous puissiez comprendre concrètement a cette adresse http://www.creaweb68.fr/CW/autotran/liste_dynamique/

si dans le select catégorie on choisi CABRIOLET le 2 eme donne Peugeot... jusque la tout va bien mais si je click sur Peugeot il me renvoi dans le troisième select plusieurs modèle alors que j en possède Qu' un dans ma base ..

voici le code que j utilise:

mon ajax
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
71
 
// JavaScript Document
$(document).ready(function() {
	var $Carosserie = $('#Carosserie');
	var $Marque = $('#Marque');
	var $Modele = $('#Modele');
 
	// 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
				$('#Carosserie').append('<option value="'+ index +'">'+ value +'</option>');
			});
		}
	});
 
	// à la sélection de la localité un dans la liste
	$Carosserie.on('change', function() {
		var val = $(this).val(); // on récupère la valeur de la localité un
		if(val != '') {
			$Marque.empty(); // on vide la liste de localité deux
			$Marque.append('<option value="">Marque</option>');
 
			$.ajax({
				url: 'liste.php',
				data: 'Carosserie='+ val, // on envoie $_GET['localite_un']
				dataType: 'json',
				success: function(json) {
					$.each(json, function(index, value) {
						$Marque.append('<option value="'+ index +'">'+ value +'</option>');
					});
				}
			});
		}
		else {
			$Marque.empty();
			$Marque.append('<option value="">Marque</option>');
			$Modele.empty(); // on vide la liste de localité deux
			$Modele.append('<option value="">Modele</option>');
		}
	});
 
	// à la sélection de la localité deux dans la liste
	$Marque.on('change', function() {
		var val = $(this).val(); // on récupère la valeur de la localité deux
		if(val != '') {
			$Modele.empty(); // on vide la liste de localité trois
			$Modele.append('<option value="">Modele</option>');
 
			$.ajax({
				url: 'liste.php',
				data: 'Marque='+ val, // on envoie $_GET['localite_deux']
				dataType: 'json',
				success: function(json) {
					$.each(json, function(index, value) {
						$Modele.append('<option value="'+ index +'">'+ value +'</option>');
					});
				}
			});
		}
		else {
			$Modele.empty();
			$Modele.append('<option value="">Modele</option>');
		}
	});
});
mon 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
 
<?php
 
 
 
// Vérification des paramètres d'accès au fichier liste.php
if(isset($_GET['go']) || isset($_GET['Carosserie']) || isset($_GET['Marque'])) {
	// connexion à la base de données
	try {
		$bdd = new PDO('mysql:host=localhost;dbname=Autotransaction', '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 DISTINCT(Carosserie) FROM autotran ";
		// 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["Carosserie"]][] = utf8_encode($donnees["Carosserie"]);
      //execute la requete,recupere les resultats et fusionne avec le modele html
 
		}
	}
	elseif(isset($_GET['Carosserie'])) {
		// requête qui récupère les localités un
		$requete = "SELECT DISTINCT(Marque) FROM autotran WHERE Carosserie = '".$_GET['Carosserie']."' ";
		// 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["Marque"]][] = utf8_encode($donnees["Marque"]);
		}
	}
	elseif(isset($_GET['Marque'])) {
		// requête qui récupère les localités un
		$requete = "SELECT DISTINCT(Modele) FROM autotran WHERE Marque = '".$_GET['Marque']."'";
		// 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["Carosserie"]][] = utf8_encode($donnees["Modele"]);
		}
	} 
	 // envoi du résultat au success
	echo json_encode($json);
}
 
?>

et mon 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
 
<html>
    <head>
        <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
        <script type="text/javascript" src="liste.js"></script>
    </head>
    <body>
        <select id="Carosserie">
        	<option value="">Catégories</select>
        </select> <br />
        <select id="Marque">
        	<option value="">Marque</select>
        </select> <br />
        <select id="Modele">
        	<option value="">Modele</select>
        </select>
    </body>
</html>

merci d avance pour l aide apporté