Listes déroulantes liées

Eléphanteau du PHP | 12 Messages

08 avr. 2014, 14:12

Bonjour à tous,

je veux créer une liste déroulante de façon à ce que quand je sélectionne, disons un groupe d'exploitation , j'aurais une autre liste déroulante qui me donne le nom des agences qui font partie de ce groupe d'exploitation et quand je sélectionne dans la deuxième liste une agence donnée, j'aurais toutes les infos concernant ladite agence du groupe d'exploitation sélectionné

j'ai deux tables dans ma bdd sur phpmyadmin, une table groupe_exploitation et une autre agence
quand j'utilise mon code :
<?php
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=agence', 'root', '');
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>

            <form method="post" action="new5.php">
 
           <label for="Groupe_exploitation">Sélectionnez un groupe d'exploitation</label><br />
     <select name="groupe" id="groupe">
 
<?php
 
           $reponse = $bdd->query('SELECT nomgroupe FROM Groupe_exploitation');
            while ($donnees = $reponse->fetch())
          {
?>
           <option value="<?php echo $donnees['nomgroupe']; ?>"> <?php echo $donnees['nomgroupe']; ?></option>
		   
<?php
}
 
?>
</select>
 
</form>


<form method="post" action="new5.php">
 
    <label for="Agencecpa">Selectionnez une agence</label><br />
     <select name="agence" id="agence">
 
<?php
 echo '<option value="'.$data['nomgroupe'].'">'.$data['id'].'</option>';

$reponse = $bdd->query('SELECT code, nom, adresse, num, email, fax, nomgroupe
FROM agencecpa, groupe_exploitation
WHERE agencecpa.idgroupe = groupe_exploitation.id');
 
while ($donnees = $reponse->fetch())
{
?>
           <option value="<?php echo $donnees['nom']; ?>"> <?php echo $donnees['nom']; ?></option>
		   
<?php
}
 
?>
</select>

J'obtiens les deux listes déroulantes, dans la 1ere j'ai les groupes d'exploitation et dans la deuxième j'ai tout les noms des agences.
moi ce que je veux faire c'est quand je sélectionne dans la 1ere liste un groupe d'exploitation, je veux que dans la 2eme liste il n y ait que le nom des agences de ce groupe sélectionné

Eléphant du PHP | 363 Messages

08 avr. 2014, 14:54

Bonjour,

Avec ou sans rafraîchissement de la page ?

Si c'est avec, tu récupères en PHP la variable postée et tu t'en sers pour construire ta seconde requête (celle qui construit la 2ème liste)

Si c'est sans, tu dois passer par de l'AJAX.

Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

Eléphanteau du PHP | 12 Messages

08 avr. 2014, 17:05

Merci pour la réponse, Je n'ai pas bien compris quand vous parlez de avec ou sans rafraichissement de la page, je ne savais pas qu'il y avait une différence, mes connaissances en php sont un peu limitées.

Eléphant du PHP | 363 Messages

08 avr. 2014, 17:59

Au vue de la donne on peut gérer cela de 2 façons :

1 - soit on poste la variable c'est à dire qu'on place sa liste dans un formulaire et dès qu'on change la valeur de la première liste on passe cette valeur à la liste 2 pour le traitement.

2 - soit on fait de l'ajax qui est plus esthétique mais plus complexe.

Y'a t-il un inconvénient à recharger la page ?

Fé.
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

Eléphanteau du PHP | 12 Messages

08 avr. 2014, 18:19

Non pas d'inconvénient à recharger la page.

j'ai essayer avec un autre code celui ci :
<?php
session_start();
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "root";
$mdp     = "";
$base    = "agence";
$connexion = mysql_connect($serveur, $admin, $mdp);
 mysql_select_db($base, $connexion);
 
 
if(isset($_POST['groupe_exploitation'])){
    $_SESSION['groupe_exploitation'] = $_POST['groupe_exploitation'];
    echo 'vous avez choisi lae groupe_exploitation '.$_SESSION['groupe_exploitation'].'<br />';
}
if(isset($_POST['agencecpa'])){
    $_SESSION['agencecpa'] = $_POST['agencecpa'];
    echo 'vous avez choisi l"agence '.$_SESSION['agencecpa'].'<br />';
}

?>
Choisissez un groupe d'exploitation
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chg_groupeexp">
    <select name="groupexp" id="groupexp" onchange="document.forms['chg_groupexp'].submit();">
        <option>- - - Choisissez un groupe d'exploitation - - -</option>
        <?php
            $sql1 = "SELECT `id`, `nomgroupe` 
                    FROM `groupe_exploitation`
                    ORDER BY `id`";
            $rech_groupe = mysql_query($sql1);
            if($rech_groupe != false){
                while($ligne = mysql_fetch_assoc($rech_groupe)){  ?>
                    <option value="<?php echo $ligne['id']; ?>"
                    <?php if(isset($_SESSION['groupe_exploitation']) 
                            AND $_SESSION['groupe_exploitation'] == $ligne['id'])
                            echo 'selected="selected"'; ?>>
                            <?php echo $ligne['nomgroupe']; ?>
                    </option>
                <?php
                }
            }
            mysql_free_result($rech_groupe);
            ?>
    </select>
</form>   
choisir une Agence
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chg_agencecpa">
    <select name="agencecpa" id="agencecpa" onchange="document.forms['chg_agencecpa'].submit();">
        <option>- - - Choisissez une sous-classe - - -</option>
        <?php
            if(isset($_SESSION['groupe_exploitation'])){
                $sql2 = "SELECT `code`, `nom` 
                        FROM `agencecpa` 
                        WHERE `id` = ". $_SESSION['groupe_exploitation'] ."
                        ORDER BY `code`;";
                $rech_agence = mysql_query($sql2);
                if($rech_agence != false){
                    while($ligne = mysql_fetch_assoc($rech_agence)){  ?>
                        <option value="<?php echo $ligne['code']; ?>"
                        <?php if(isset($_SESSION['groupe_exploitation']) 
                                AND$_SESSION['agencecpa'] == $ligne['code'])
                                echo 'selected="selected"'; ?>>
                                <?php echo $ligne['nom']; ?>
                        </option>
                    <?php
                    }
                }
                mysql_free_result($rech_agence);
            }
            ?>
    </select>
</form>   



J'ai bien les enregistrements des groupes d'exploitations, par contre dans la deuxième liste ( la où je dois normalement avoirs les agences correspondantes au groupe sélectionné ) il n y a aucun enregistrements, elle reste vide.

Eléphanteau du PHP | 12 Messages

08 avr. 2014, 23:18

up