Listes déroulantes liées

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Listes déroulantes liées

Re: Listes déroulantes liées

par turkish15 » 08 avr. 2014, 23:18

up

Re: Listes déroulantes liées

par turkish15 » 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.

Re: Listes déroulantes liées

par foetus69 » 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é.

Re: Listes déroulantes liées

par turkish15 » 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.

Re: Listes déroulantes liées

par foetus69 » 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.

Listes déroulantes liées

par turkish15 » 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é