Liste déroulante "selected"

Signaler
Messages postés
17
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
21 mars 2007
-
Messages postés
38
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
28 novembre 2007
-
voila pouvez vous m'eclairé sur ce bout de code ?

<select name="affaire" id="affaire">
<option value="-1">- - - Choisissez une affaire - - -</option> 
            <?php  
            for($d = 0; $d<$nd; $d++)
            { // code_affaire rempalcé par no_affaire
                ?>
  <option value="<?php echo($no_affaire[$d]); ?>"<?php echo((isset($affaire_selectionne) && $affaire_selectionne == $code_affaire[$d])?" selected="selected"":null); ?>><?php echo($code_affaire[$d]." (". $no_affaire[$d] .")"); ?></option>
                <?php
            }
?>
</select>

ce ci est mon option value de ma 2nd liste déroulante (ce ki saffiche dans la 2eme lorsque je fait un choix dans une 1ere liste)
Le probleme, lorsque je fait mon submit, la 1ere liste reste bien sur le bon index mais la 2eme (celle-ci) se remet au début de la liste :( et moi je voudrai kelle reste sur celui que jai selectionné meme aprés le submit (mon submit ne fait que renvoyer le formulaire pour information)
merci

To be awe ...
It's The Life ! ;)

9 réponses

Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

salut
ce code me di quelque chose.
<?php echo((isset($_POST['1ere_liste_deroulante']) && $_POST['2eme_liste_deroulante'] = =
ou
if(isset($_POST['1ere_liste_deroulante']) && $_POST['affaire'] ! = "")
{
    $1ere_liste_deroulante = $_POST['1ere_liste_deroulante'];
    $affaire_selectionne = $_POST['affaire'];
}
a+
Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

suite du message validé par mon subconscient (qui me joue des tours).
<select name= "affaire" id="affaire">
<option value="-1">- - - Choisissez une affaire - - -</option> 
            <?php  
            for($d = 0; $d<$nd; $d++)
            { // code_affaire rempalcé par no_affaire
                ?>
 
<option value="<?php echo($no_affaire[$d]); ?>"<?php echo((isset( $1ere_liste_deroulante ) && $affaire_selectionne = = $code_affaire[$d])?" selected="selected"":null); ?>><?php
echo($code_affaire[$d]." (". $no_affaire[$d] .")");
?></option>
                <?php
            }
?>
</select>
Messages postés
17
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
21 mars 2007

ha ba na ...
dans tout les cas apré mon submit ca me remet sur : - - - Choisissez une affaire - - -

To be awe ...
It's The Life ! ;)
Messages postés
17
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
21 mars 2007

sans oublier les index non défini ...
moi ce ke jve c'est qu'apres mon submit sur cette liste déroulante, il reste sur l'index selectionnée !!!

sur ma 1ere liste déroulante si dessous ca marche bien :(

<legend>Sélectionnez un client</legend>
<select name="client" id="client" onChange="document.forms['chgaff'].submit();">
  <option value="-1">- - - Choisissez un client - - -</option>
    <?php
    for($i = 0; $i < $nb_clients; $i++)
    {
?>
  <option value="<?php echo($code_client[$i]); ?>"<?php echo((isset($idr) && $idr == $code_client[$i])?" selected="selected"":null); ?>><?php echo($client[$i]); ?></option>
<?php
    }
    ?>
</select>

To be awe ...
It's The Life ! ;)
Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

les listes déroulantes sont bien liées.
Cest a dire que kan on selectionne  laffaire c laffaire du client deja selectionné?
Messages postés
17
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
21 mars 2007

Non,
dans la 1ere liste tu selectionne un client et aprés dans la 2eme liste apparaissent les affaires du client concerné

______       ___________________   __________
|Fnac   |      | ---selectionne affaire--- |  | VALIDER  |
--------       -------------------------   -------------
                  | affaire N°1                    |
                  --------------------------
                  | affaire N°2                    |

                  --------------------------

Si tu selectionne fnac ca va afficher : ---selectionne affaire--- et dans cette liste déroulante tu aura le choise de l'aff n°1 et n°2
aprés kan je selectionne l'affaire, ca maffiche les detail de celle ci (aprés apré ke jai appuier sur VALIDER) mais dans la 2nd liste déroulante ca me remet sur : ---selectionne affaire--- . Alors que jai besoin que ca reste sur laffaire selectionné car il fo que je fasse un $_POST dessus dans le traitement de mon formulaire plus bas.
jespere que jai été clair

To be awe ...
It's The Life ! ;)
Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

ca doit faire ca jai pas testé :

if(isset($_POST['client'])){$le_client=$_POST['client'];}
if(isset($_POST['affaire']) && $_POST['affaire'] != "")
{
    $client_selectionne = $_POST['client'];
    $affaire_selectionne = $_POST['affaire'];
}

$req = "SELECT num_client, nom_client FROM clients ORDER BY num_client;";
    $rech_cli = mysql_query($req);
    $code_cli = array();
    $client = array();
    /* On active un compteur pour les clients */
    $nb_cli = 0;
    if($rech_cli != false)
    {
        while($row = mysql_fetch_assoc($rech_cli))
        {
            array_push($code_cli, $row['num_cli']);
            array_push($client, $row['nom_cli]);

            /* On incrémente le compteur */
            $nb_cli++;
        }
    }
    ?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" id="client" name="client">
                    marque <select name="client" id="client" onchange="document.forms['client'].submit();">
                        <option value="-1">- - - Choisissez un client - - -</option>
                        <?php
                        for($i = 0; $i < $nb_cli; $i++)
                        {
                        ?>
                              <option value="<?php echo($code_cli[$i]); ?>"<?php echo((isset($le_client) && $le_client == $code_cli[$i])?" selected="selected"":null); ?>><?php echo($client[$i]); ?></option>
                        <?php
                        }
                        ?>
                    </select>
                    <?php
                        mysql_free_result($rech_cli);
                    /* On commence par vérifier si on a envoyé un numéro de client et le cas échéant s'il est différent de -1 */

                    if(isset($le_client) && $le_client != -1)
                        {
                            /* Création de la requête pour avoir les affaires du client */                        $req2 "SELECT num_affaire, nom_affaire FROM affaire WHERE num_affaire '".$le_client."' ORDER BY num_affaire;";
       
                        $rech_affaire = mysql_query($req2);
                        /* Un petit compteur pour les modèles */
                        $nb_affaire = 0;
                        /* On crée deux tableaux pour les numéros et les noms des modèles */
                        $code_affaire = array();
                        $nom_affaire = array();
                        /* On va mettre les numéros et noms des modèles dans les deux tableaux */
                        while($row2 = mysql_fetch_assoc($rech_affaire))
                        {
                            array_push($code_affaire, $row2['num_affaire']);
                            array_push($nom_affaire, $row2['nom_affaire']);
                            $nb_affaire++;
                        }
                            /* Maintenant on peut construire la liste déroulante */
                            ?>
                   
                        affaire <select name="affaire" id="affaire">
                        <?php 
                        for($d = 0; $d<$nb_affaire; $d++)
                        {
                        ?>
                              <option value="<?php echo($code_affaire[$d]); ?>"<?php echo((isset($affaire_selectionne) && $client_selectionne == $code_affaire[$d])?" selected="selected"":null); ?>><?php echo $nom_affaire[$d]; ?></option>
                        <?php
                        }
                        ?>
                    </select>
                    <?php
                        
                        /* Un petit coup de balai */
                    mysql_free_result($rech_affaire);
                       }
                    ?>
                   
                </form>
Messages postés
17
Date d'inscription
mercredi 2 juillet 2003
Statut
Membre
Dernière intervention
21 mars 2007

<?php
if(isset($_POST['ok']) && isset($_POST['affaire']) && $_POST['affaire'] != "")
{
    $client_selectionnee = $_POST['client'];
    $affaire_selectionne = $_POST['affaire'];
}
?>
Trouver une affaire
<?php

if($renta != false)
{
    $sql1 = "SELECT `Nro_Cli`, `Nom_Cli`".
    " FROM `CLIENT`".
    " ORDER BY `Nom_Cli`";
    $rech_clients = mysql_query($sql1);
    $code_client = array();
    $client = array();
    /* On active un compteur pour les clients */
    $nb_clients = 0;
    if($rech_clients != false)
    {
        while($ligne = mysql_fetch_assoc($rech_clients))
        {
            array_push($code_client, $ligne['Nro_Cli']);
            array_push($client, $ligne['Nom_Cli']);

            /* On incrémente de compteur */
            $nb_clients++;
        }
    }
    //"<?php echo($_SERVER['PHP_SELF']); ? >"
    ?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgaff" name="chgaff">

<legend>Sélectionnez un client</legend>
<select name="client" id="client" onChange="document.forms['chgaff'].submit();">
  <option value="-1">- - - Choisissez un client - - -</option>
    <?php
    for($i = 0; $i < $nb_clients; $i++)
    {
?>
  <option value="<?php echo($code_client[$i]); ?>"<?php echo((isset($idr) && $idr == $code_client[$i])?" selected="selected"":null); ?>><?php echo($client[$i]); ?></option>
<?php
    }
    ?>
</select>
    <?php
    mysql_free_result($rech_clients);
    /* On commence par vérifier si on a envoyé un numéro de client et le cas échéant s'il est différent de -1 */
   
    if(isset($idr) && $idr != -1)
    {
        /* Cération de la requête pour avoir les affaires de ce client */
        $sql2 = "SELECT `CLIENT_Nro_Cli`, `Nom_Aff`, `Nro_Affaire`".
        " FROM `AFFAIRE`".
        " WHERE `CLIENT_Nro_Cli` = ". $idr ."".
        " ORDER BY `CLIENT_Nro_Cli`;";
        if($renta != false)
        {
            $rech_affaire = mysql_query($sql2, $renta);
            /* Un petit compteur pour les affaires */
            $nd = 0;
            /* On crée deux tableaux pour les numéros et les noms des affaires */
            $code_affaire = array();
            $nom_affaire = array();
            $no_affaire = array() ;
            /* On va mettre les numéros et noms des affaires dans les deux tableaux */
            while($ligne_affaire = mysql_fetch_assoc($rech_affaire))
            {
                array_push($code_affaire, $ligne_affaire['Nom_Aff']);
                array_push($nom_affaire, $ligne_affaire['CLIENT_Nro_Cli']);
                array_push($no_affaire, $ligne_affaire['Nro_Affaire']);
                $nd++;
            }
            /* Maintenant on peut construire la liste déroulante */
            ?>
<select name="affaire" id="affaire" onChange="document.forms['chgaff'].submit()" >
<option value="-1">- - - Choisissez une affaire - - -</option>
            <?php  
            for($d = 0; $d<$nd; $d++)
            {

                ?>
  <option value="<?php echo($no_affaire[$d]); ?>"<?php echo((isset($affaire_selectionne) && $affaire_selectionne == $code_affaire[$d])?" selected="selected"":null); ?>><?php echo($code_affaire[$d]." (". $no_affaire[$d] .")"); ?></option> 
                <?php
            }
?>
</select>
<?php
        }
        /* Un petit coup de balai */
        mysql_free_result($rech_affaire);
    }
?>

moi j'ai car me basé par rapport a ce que tu ma donnée ne fait que plus membrouiller ! lol (mais jai pas dit que s'etait pas bien !!!)
(jai suppr le bouton et mis le submit sur le onchange dans ma 2eme liste pour éviter au commerciaux davoir trop de bouton a cliker)

To be awe ...
It's The Life ! ;)
Messages postés
38
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
28 novembre 2007

Une petite idée:

$j = 0;
echo "<select....>";
while (mysql_fetch_array(blabla){
echo "<option value.......";
echo $j === 0 ? ' checked' : '';
$j++;
}

Si l'enregistrement est le numero 0 (les 3 = pour le strictement) l'enregistrement est selectionné dans la liste.