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