Garder la valeur selectionné

Eléphant du PHP | 187 Messages

28 déc. 2011, 16:46

bonjour ^^
je veux faire un truc mais je sais pas comment :?
sur un formulaire j'ai plusieurs critères de recherche: un principal (par Client) et d'autre secondaires (par ville,par secteur..)
Alors je cherche comment faire pour garder et récupérer le choix du Client sélectionné pour que quand il va l'user choisir par ville ou..il l'a pas besoin de reselectionner le client..mais c'est déjà garder le même jusqu’à que l'user selectionne un autre client ..
Après moi je fait les requete de recherche par le CLIENT choisie et l'autre critere choisie.
J'ai déjà fait un truc pareil sur une liste-Menu mais c’était statique et non importation depuis la base de donnée:
<select name="liste" id="liste" onchange="get_med();">
          <option selected="selectionnez" value="">Selectionnez </option>
          <option <?php if(isset($_SESSION['liste'])){if($_SESSION['liste']=="liste1"){echo "selected";}}?> value="liste1">Liste 1</option>
          <option <?php if(isset($_SESSION['liste'])){if($_SESSION['liste']=="liste2"){echo "selected";}}?> value="liste2">Liste 2</option>
          <option <?php if(isset($_SESSION['liste'])){if($_SESSION['liste']=="liste3"){echo "selected";}}?> value="liste3">Liste 3</option>
          <option <?php if(isset($_SESSION['liste'])){if($_SESSION['liste']=="liste4"){echo "selected";}}?> value="liste4">Liste 4</option>
      </select>
hmmm j'espère j'etais assez claire et merci pour tout aide $$

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 déc. 2011, 18:11

Le principe est le même que ta liste soit statique ou dynamique, il faut que dans l'option que tu souhaites sélectionner par défaut, tu ajoutes l'attribut "selected".

Tu dois logiquement avoir une boucle qui te permet d'afficher chaque option avec le nom de tes clients. Dans cette boucle il faut donc ajouter un test pour savoir si le client que tu es en train d'afficher est celui qui a été retenu (en session, en post, ... bref, là où tu sais que c'est sur ce client qu'on est en train de travailler ;)). Si c'est le même, tu affiches l'option avec son nom et l'attribut selected. Si ce n'est pas le même (parce qu'on est en train d'afficher le nom d'un autre client), tu affiches juste l'option sans l'attribut selected... et hop, le tour est joué :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 187 Messages

28 déc. 2011, 18:29

j'ai pas compris comment appliquer ça sur ma liste dynamique!
<select name="client" id="client"  onchange="submit();">
           <option selected="selectionnez" value="">Selectionnez un Repr&eacute;sentant </option>
            <?php
$respo = mysql_query("SELECT DISTINCT(code),nom FROM ref ORDER BY nom ASC");
while($affiche_respo= mysql_fetch_array($respo)){
   echo '<option value="'.$affiche_respo['nom'].'('.$affiche_respo['code'].')">'.$affiche_respo['nom'].'  ('.$affiche_respo['code'].')</option>';
  }
?>
 </select>
j'ai mélangé quelque charabias ..mais c'est du n'importe quoi
$client= $_POST['client'];
<select name="client" id="client" onchange="submit();">
          <option selected="selectionnez" value="">Selectionnez </option>
          <option <?php if(isset($_SESSION['client'])){if($_SESSION['client']=="$_post['client']"){echo "selected";}}?> value="$_post['client']">?!!</option>
              </select>
:oops:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 déc. 2011, 19:07

Ca devrait donner quelque chose dans ce gout là :
while($affiche_respo= mysql_fetch_array($respo)) {
   // en supposant qu'en session tu ais le code du client
   if (isset($_SESSION['client']) && $_SESSION['client']==$affiche_respo['code']) // on compare les deux
      $selected = 'selected="selected"'; // si c'est les mêmes on ajoute notre attribut
   else // sinon, pas d'attribut
      $selected = '';

   // dans ton option on place notre variable qui indiquera quelle option est sélectionnée
   echo '<option ' . $selected . ' ... > ... </option>';
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 187 Messages

29 déc. 2011, 16:51

oui Merci bien @Ryle ^^ ça marché finalement comme ça :
<select name="client" id="client" >
           <option selected="" value="">Selectionnez un Repr&eacute;sentant </option>
            <?php
 if (isset($_GET['client'])) {
    $client= $_GET['client'];
$code=explode('(',$_POST['client']);
		$code1=$code[1];
		$code2=explode(')',$code1);
		$code3=trim($code2[0]);
		$i = 0;
		//echo $code3 ;
}
 $respo = mysql_query("SELECT DISTINCT(code),client FROM visiter ORDER BY nom ASC");
while ($req= mysql_fetch_array($respo))
 {
  ?>
      <option value="<?php echo $req['nom']; ?>"
                                     
      <?php
         if( isset($client) && $client==$req['nom'] )
           {      
             echo ' selected="selected" ';
           }
echo '>' . $req['nom'] . ' ('. $req['code'] . ')</option>';
 }
?>
?>
 </select>
Mais le problème qui me reste c'est pourquoi ma requête de recherche ça marche plus maintenant :
  <td><?PHP  $requete4 = mysql_query (" select count(id) as nb4 from visiter where code = '$code' and activite  ='priv' and date_visite BETWEEN '$date_debut' AND '$date_fin' ");
while ($row4= mysql_fetch_array($requete4)){
$nbr4 = $row4['nb4'];
//echo $nbr4 ;
echo '<center> <font color="red"> '.$nbr4.' </font>' ;  } ?></td>
:?: :?:

Eléphant du PHP | 187 Messages

29 déc. 2011, 17:26

Désolé je me suis trompé entre les $var..c'est bon maintenant ;)