Bonjour à toutes et à tous,

Après avoir franchement galéré avec ces fichu liste liées elle fonctionnement. Dernier problème comment récupérer les données ?
Bon un classique hein les régions françaises et les départements qui correspondent :

Voici le code de la page qui contient le formulaire

<?php
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="/dept_xhr.js" charset="iso_8859-1"></script>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function() {
    var $regions = $('#regions');
    var $departements = $('#departements');

    // chargement des régions
    $.ajax({
        url: 'http://127.0.0.1/php/france.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
                $regions.append('<option value="'+ index +'">'+ value +'</option>');
            });
        }
    });

    // à la sélection d une région dans la liste
    $regions.on('change', function() {
        var val = $(this).val(); // on récupère la valeur de la région

        if(val != '') {
            $departements.empty(); // on vide la liste des départements

            $.ajax({
                url: 'http://127.0.0.1/php/france.php',
                data: 'id_region='+ val, // on envoie $_GET'id_region']
                dataType: 'json',
                success: function(json) {
                    $.each(json, function(index, value) {
                        $departements.append('<option value="'+ index +'">'+ value +'</option>');
                    });
                }
            });
        }
    });
});
</script>
</head>
<body>
<form action="" method="GET">
<select id="regions" name="regions">
    <option value="">-- Regions --</option>
</select>

<select id="departements" name="departements">
    <option value="">-- Departements--</option>
</select>
</form>
</body>
</html>

Voici la page france.php :

<?php
if(isset($_GET'go']) || isset($_GET'id_region'])) {

    $json = array();

    if(isset($_GET'go'])) {
        // requête qui récupère les régions
        $requete = "SELECT id, nom FROM regions ORDER BY nom";
    } else if(isset($_GET'id_region'])) {
        $id = htmlentities(intval($_GET'id_region']));
        // requête qui récupère les départements selon la région
        $requete = "SELECT id, nom FROM departements WHERE id_region = ". $id ." ORDER BY nom";
    }

    // connexion à la base de données
    try {
        $bdd = new PDO('mysql:host=localhost;dbname=france', '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'nom']);
    }

    // envoi du résultat au success
    echo json_encode($json);
}
?>

Je ne suis pas l'auteur de ce code je l'ai trouvé ici : http://chez-syl.fr/2012/02/jquery-remplir-une-liste-deroulante-selon-une-autre-liste/#ss\_part\_1

Je l'ai adapté à mon utilisation et il fonctionne, les listes sont liées. Sauf que j'ai fait ça sans réellement comprendre tout le code et du coup je ne sais absolument pas comment je peux récupérer le

$_GET'id_region']

et aussi le

$_GET'id_departement']

et les mettre dans

$_SESSION'id_region']

et

$_SESSION'id_departement']

J'ai beaucoup souffert pour faire ces listes liées et heureusement que j'ai trouvé ce code mais bon voila il me manque juste sa et après je pourrais continuer aidez moi s'il vous plait je sais qu'ici il y a des pro.

Merci pour votre aide

26 réponses


utilisateur
Auteur
Réponse acceptée

Ok c'est bon il falait nommer les variable avec le bon nom comme suit...

echo $_GET'regions'];

et

echo $_GET'departements'];

Merci beaucoup pour ton aide

Bonjour,

$bdd = new PDO('mysql:host=localhost;dbname=france', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

Cordialement.

Ok merci pour ta réponse F0rZ3r0 est-ce que tu peux me dire où est ce que je dois mettre

$_GET'id_region'] = $_SESSION'id_region'];

et

$_GET'id_departement'] = $_SESSION'id_departement'];

a quel endroit dans le code pour récupérer les valeurs dasn la page de traitement du formulaire ?

Merci pour ton aide

Bonjour,
France.php :

<?php
// connexion à la base de données
   try {
        $bdd = new PDO('mysql:host=localhost;dbname=france', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
    } catch(Exception $e) {
        exit('Impossible de se connecter à la base de données.');
    }
if(isset($_GET'go']) || isset($_GET'id_region'])) {

    $json = array();

    if(isset($_GET'go'])) {
        // requête qui récupère les régions
        $requete = "SELECT id, nom FROM regions ORDER BY nom";
    } else if(isset($_GET'id_region'])) {

        $id = htmlentities(intval($_GET'id_region']));
        // requête qui récupère les départements selon la région
        $requete = "SELECT id, nom FROM departements WHERE id_region = ". $id ." ORDER BY nom";
    }

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

    // envoi du résultat au success
    echo json_encode($json);
}
?>

Cordialement =)

Merci F0rZ3r0 j'ai fait la modif.
Excuse moi mais je ne vois toujours pas comment récupérer les données id-departement et id_region ?

Bonjour, pourrez tu éventuellement me faire un .ZIP de tout ton code avec base de donnée que je jette un oeil sur le sujet ?

cordialement.

oui ok je prépare ça

Sa y est c'est prêt heum comment je te l'envois ?

Bonjour,
Dropbox où par e-mail : xen0ris@outlook.fr
Cordialement.

ça y est je te l'ai envoyé

Bonjour, je vous et répondu avec le projet fixer.

Cordialement.

Aïe je viens de placer les fichiers dans le repertoire WWW de wamp je selectionne une région mais les departements correspondant dans la liste "departement" ne sont pas les bons. J'ai placé un bouton submit qui pointe vers une page traitement mais lorsque je teste je n'ai plus de departements dans la colonne "departements"...

Pas facile tout ça

Bonsoir,
la page france.php?go&id_regions=[id]
Modifier les liens de pointage sur l'index.php

Cordialement.

Oui j'ai modifié le lien il pointe bien sur la page france.php avec l'URL : http://127.0.0.1/france.php

Bonjour,
Ses tout bon donc ?
Cordialement.

hélas non comme je te le disais j'ai placé les fichiers dans le repertoire WWW de wamp je selectionne une région mais les departements correspondant dans la liste "departement" ne sont pas les bons. J'ai placé un bouton submit qui pointe vers une page traitement mais lorsque je teste je n'ai plus de departements dans la colonne "departements"...

bonjour;
'-' mince alors !
cordialement.

c'est l'enfer ces listes liées je patoge complètement

Bonjour, moi cela marchais très bien :S
Cordialement.

j'ai beau regarder je vois pas ce qui coince

En fait avec le code que j'ai posté au début sa fonctionne c'est juste que je cherche où mettre le code $_GET'id_region'] = $_SESSION'id_region']; et $_GET'id_departement'] = $_SESSION'id_departement']; pour pouvoir récupérer les données...

Bonsoir, je n'es pas eux besoin de cela ^^

Cordialement.

ok en tout cas merci pour ton aide je farfouïlle dans le code je te tiendrais au courant

Bonsoir,
Merci infiniment.
Cordialement.

Malheureusement sa ne fonctionne pas avec le code que tu m'as envoyé j'ai toujours le problème je n'ai pas les bons départements correspondant aux régions et je ne récupère toujours pas les données

Bonsoir, vérifier vos table de donnée surement et la le soucis car j'ai eux le même soucis.
Mais je ne me suis pas pencher sur les requête juste sur le code de base.

Cordialement.