1er Fichier avec un include de Traitement
<?php
$local = $_SERVER['SERVER_NAME'];
$dbserver='localhost'; //ADRESSE DU SERVEUR SQL
$dbdb="agence"; //NOM DE LA BASE DE DONNEES A UTILISER
$dbuser="root"; //NOM D'UTILISATEUR DE LA LA BASE DE DONNEES A UTILISER
$dbpass=""; //MOT DE PASSE DE LA BASE DE DONNEES A UTILISER
$racine = "";
$local = "http://".$local;
try
{
$bdd = new PDO("mysql:host=$dbserver;dbname=$dbdb", $dbuser, $dbpass, array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
include('traitement.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>Alimenter une liste de Ville selon le Département sélectionnée avec jQuery et MySQL</title>
<link rel="stylesheet" href="css/styles.css" />
<script src="jquery_3-2-0-min.js"></script>
<script>
$(document).ready(function() {
var $departement = $('#departement');
var $ville = $('#ville');
// chargement des régions
$.ajax({
url: 'index.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
$departement.append('<option value="'+ index +'">'+ value +'</option>');
});
}
});
// à la sélection d'un Département dans la liste
$departement.on('change', function() {
var val = $(this).val(); // on récupère la valeur du Département
if(val != '') {
$ville.empty(); // on vide la liste des Villes
$.ajax({
url: 'index.php',
data: 'id='+ val, // on envoie $_GET['id']
dataType: 'json',
success: function(json) {
$.each(json, function(index, value) {
$ville.append('<option value="'+ index +'">'+ value +'</option>');
});
}
});
}
});
});
</script>
</head>
<body>
<h2>Alimenter une liste de départements selon la région sélectionnée avec jQuery et MySQL</h2>
<form class="recherche" method="post" name="recherche" action="">
<select id="departement" name="departement">
<option value="">-- Département --</option>
<?php $reponse03 =$bdd->prepare('SELECT DISTINCT departement FROM vendeur ORDER BY departement ASC');
$reponse03->bindParam(':localite', $localite, PDO::PARAM_STR);
$reponse03->bindParam(':departement', $departement, PDO::PARAM_INT);
$reponse03->execute();
while ($donnees03 = $reponse03->fetch())
{
echo "<option value='".$donnees03['departement']."'>".$donnees03['departement']."</option>";
}
?>
</select>
<select id="ville" name="ville">
<option value="">-- Ville--</option>
<?php
$reponse04 =$bdd->prepare('SELECT localite FROM vendeur WHERE departement LIKE "'.$_POST['departement'].'%" ORDER BY localite ASC');
$reponse04->bindParam(':departement', $departement, PDO::PARAM_STR);
$reponse04->bindParam(':localite', $localite, PDO::PARAM_STR);
$reponse04->execute();
while ($donnees04 = $reponse04->fetch())
{
echo "<option value='".$donnees04['localite']."'>".$donnees04['localite']."</option>";
}
?>
</select>
</form>
</body>
</html>
2ème Fichier
<?php
//traitement.php
//recuperation des variables
//$val = !empty($_POST['val']) ? $_POST['val'] : NULL;
//$result = array();
if(isset($_GET['go']) || isset($_GET['id'])) {
echo 'dedans';
$json = array();
if(isset($_GET['go'])) {
// requête qui récupère les régions
$requete = "SELECT id, departement FROM vendeur ORDER BY departement";
} else if(isset($_GET['id'])) {
$id = htmlentities(intval($_GET['id']));
// requête qui récupère les départements selon la région
$requete = "SELECT id, localite FROM vendeur WHERE id = ". $id ." ORDER BY localite";
}
// connexion à la base de données
try {
$bdd = new PDO('mysql:host=localhost;dbname=agence', '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['departement']);
}
// envoi du résultat au success
echo json_encode($json);
}
?>
Si je sélectionne le département le second select est vide
Merci encore à toi Jordane
Cordialement