Page 1 sur 1

liste liées

Posté : 26 avr. 2014, 14:41
par baddevil
bonjour,

je suis débutant et suis confronté a un soucis avec ma liste liée, au premier abord elle a l air de fonctionner cependant pas entièrement car selon ce que je selectionne dans les 1 er select le resultat trouvé dans les seconds sont pas forcement juste

mon code ajax:

[javascript]
// 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>');
}
});
});
[/javascript]

mon code php:
<?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"]);
		}
	}
	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["Modele"]][] = utf8_encode($donnees["Modele"]);
		}
	}
	 // envoi du résultat au success
	echo json_encode($json);
}

?>
mon html:
<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>
        <select id="Marque">
        	<option value="">Marque</select>
        </select>
        <select id="Modele">
        	<option value="">Modele</select>
        </select>
    </body>
</html>
et vous pouvez voir le resultat sur cette page http://www.creaweb68.fr/CW/autotran/liste_dynamique

exemple concret : si vous choisissez la categorie cabriolet dans le 1 select , le second affiche bien Peugeot(tout va bien jusque la car j ai qu un cabrio dans ma base et c est bien un peugeot)
par contre lorsque je clic sur Peugeot ben il devrait me retourné qu un seul resultat dans le 3 eme select et c est loin d etre le cas, ce qui me parait bizarre c est que selon la categorie choisi certaine ont l air de fonctionné

d ou peut venir le probleme ??

je signal que le code n est pas de moi ,je l ai recupéré sur un site

merci d avance pour votre aide

Re: liste liées

Posté : 28 avr. 2014, 21:32
par baddevil
bonsoir, petit up s ils vous plaient :idea:

Re: liste liées

Posté : 29 avr. 2014, 22:31
par baddevil
:cry: personne ne peut m aider ?....