Double liste déroulante | selected

blutch38 Messages postés 17 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 21 mars 2007 - 12 déc. 2006 à 08:41
blutch38 Messages postés 17 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 21 mars 2007 - 12 déc. 2006 à 10:20
Bonjour,
j'ai 2 liste déroulante, lié l'une à lautre.
la 1ere me permet de selectionner un client
la 2eme de selectionner les affaires en cours du client.
Quand je selectionne l'a 1ere avec le Onchange, jfé un submit pour afficher les affaire du client (la toujour OK)
Quand je selectionne la 2eme avec la propriete Onchange je faire un submit du formulaire pour afficher les detail de l'affaire
mon souci : quand j'effectue le submit sur la 2eme liste déroulante, la liste se remet sur l'index -1 et de ce fait, je ne pe pas recupéré le numéro de l'affaire. Car jen est besoin un peu plus bas dans mon formulaire pour ajouter une affaire.
donc jaimerai que lorsque je selectionne une affaire dans ma 2nde liste déroulante, que mon choix reste selectionné et que l'index ne revienne pas a -1.
j'espere etre assé clair

Mes table :
AFFAIRE :
    Nro_affaire (pk)
    CLIENT_Nro_Cli (fk)
    Date_etude
    ....
CLIENT:
    Nro_Cli (pk)
    Nom_Cli
    ....

Code des liste déroulantes               


<?php 

if(isset($_POST['ok']) &amp;&amp; isset($_POST['affaire']) &amp;&amp; $_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++; 
        } 
    } 

    ?> 
<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" selected="selected">- - - Choisissez un client - - -</option> 
    <?php 
    for($i = 0; $i < $nb_clients; $i++) 
    { 
?> 
  <option value="<?php echo($code_client[$i]); ?>"<?php echo((isset($idr) &amp;&amp; $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) &amp;&amp; $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++) 
            { 

            
            // ICI regarder ac le selected null car renvoi -1
                ?> 
  <option value="<?php echo($no_affaire[$d]); ?>"<?php echo((isset($affaire_selectionne) &amp;&amp; $affaire_selectionne == $code_affaire[$d])?" selected="selected"":null); ?>><?php echo($code_affaire[$d]." (". $no_affaire[$d] .")"); ?></option>
      
                <?php 
            } 
?> 
</select> 
<?php 
        } 
       
        mysql_free_result($rech_affaire); 
    } 
?>

 
<?php 
    /* Terminé, on ferme la connexion */ 
   // mysql_close($renta); 
} 
else 
{ 

echo "Un incident s'est produit lors de la connexion à la base de données, veuillez essayer à nouveau ultérieurement."; 
 
} 
?> 



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

2 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 déc. 2006 à 09:40
Hello,

je donne un exemple ici :
http://codyx.org/snippet_listes-deroulantes-liees_89.aspx#229

Il faut tester la valeur du POST pour mettre l'option précédemment sélectionnée à select="selected"
0
blutch38 Messages postés 17 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 21 mars 2007
12 déc. 2006 à 10:20
je vien de regarder ton exemple et je tavou que je ne comprend pas trop =/
si tu pourrai me donner un exemple plus adapter à mon code ca serrai super gentil :D

To be awe ...
It's The Life ! ;)
0
Rejoignez-nous