garder valeur liste deroulante

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 : garder valeur liste deroulante

Re: garder valeur liste deroulante

par graffx » 11 juil. 2010, 17:19

Effectivement, ton conseil etait le bon, voial ce que j' ai fait:
					      <?php
						  $l2 = mysql_query('SELECT distinct * FROM villes ORDER BY ville ASC')or die(mysql_error());
						  while ($l = mysql_fetch_array($l2))
						  {
						  $selected=($l["ville"]==$_GET["v"])?" selected":"" ;
						  
						  echo '<option '.$selected.'>'.$l["ville"].'</option>';
					      }
					      ?>

Ca marche a merveille, cependant un autre souci me turlupine, j' ai une boucle avec des conditions, rien ne s' affiche avec un <?php echo $actu['titre']; ?> ou meme une autre variable.

Si je met l' une ou l' autre requete directement dans phpmyadmin, ca marche nickel, je n' ai plus d' erreur du tout, mais mon texte ne s' affiche pas.

						<?php
		if(!isset($_GET['c']))
		{
		$actu2 = mysql_query('SELECT * FROM actus ORDER BY id DESC')or die(mysql_error());	
		}
		
		
		elseif(isset($_GET['c'])&&($_GET['c'] == 'ttactu'))
		{
		$actu2 = mysql_query('SELECT * FROM actus ORDER BY id DESC')or die(mysql_error());	
		}
		
		
		elseif(isset($_GET['c'])&&($_GET['c'] == 'fd'))
		{
		$actu2 = mysql_query('SELECT * FROM actus WHERE rubrique = "fd" ORDER BY id DESC')or die(mysql_error());	
		}
		
		
		elseif(isset($_GET['c'])&&($_GET['c'] == 'd'))
		{
		$actu2 = mysql_query('SELECT * FROM actus ORDER BY id DESC')or die(mysql_error());	
		}
		
		
		elseif(isset($_GET['c'])&&($_GET['c'] == 'sp'))
		{
		$actu2 = mysql_query('SELECT * FROM actus ORDER BY id DESC')or die(mysql_error());	
		}
		?>
		
		
		
				  <?php
				  while ($actu = mysql_fetch_array($actu2));
		          {
		          ?>
                    <table width="670" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td><?php echo $actu['titre']; ?><?php echo $actu['id']; ?></td>
                      </tr>
                      <tr>
                        <td>&nbsp;</td>
                      </tr>
                      <tr>
                        <td>&nbsp;</td>
                      </tr>
                    </table></td>
                </tr>
              </table></td>
            </tr>
            <tr>
              <td height="10" background="images/style/bmiddle.png"></td>
            </tr>
          </table>
		  <?php
		  }
		  ?>

Merci de ton aide!

Re: garder valeur liste deroulante

par Ryle » 11 juil. 2010, 10:59

Tout à fait ! Sauf qu'un seul if devrait être suffisant :)

A noter également que ton isset devrait plutot vérifier l'existence de $_GET['v'] , car si tu déclares juste "$v = ..." ton $v sera toujours défini :)
<?php

if (isset($_GET['v'])) {
    $v = $_GET['v'];
}

...

while ($l = mysql_fetch_array($l2))
 {
  ?>

      <option value="<?php echo $l['ville']; ?>" 
                                                  
      <?php 
         if( isset($v) && $v==$l['ville'] )
           {       
             echo ' selected="selected" ';
           }

        echo '>' . $l['ville'] . '</option>';
 }
?>

Re: garder valeur liste deroulante

par graffx » 10 juil. 2010, 17:23

Mais alors, que faire?

edit:

en fait tu suggererai un truc du genre:
                                                  <?php if(isset($v)&&if($v == $l['ville']))
                                                  {      
                                                  echo 'selected="selected">';
                                                  }

Re: garder valeur liste deroulante

par Ryle » 10 juil. 2010, 13:05

Actuellement, ton code va ajouter le selected lorsque $v existe.... le problème c'est que si $v existe tu vas l'ajouter sur chaque option ce qui n'a pas grand intérêt...

L'attribut "selected" ne doit être spécifié que pour l'option à sélectionné... donc si $v est défini ET que la valeur de $v correspond à l'option sur laquelle tu te trouves :)

A noter qu'en xhtml, l'attribut doit être : selected="selected" et non pas une autre valeur potentiellement contenue dans $v ;)

garder valeur liste deroulante

par graffx » 10 juil. 2010, 12:04

Salut a tous!

j' ai un conflit avec mon pc! il veut rien savoir :)

J' aimerai simplement que lorsqu' on clique sur un choix de liste deroulante, la page sois F5 avec le choix de la liste non réinitialisé, et donc, toujours gardé en memeoire.

je fais donc ceci avec en debut de page un petit
$v = $_GET['v'];
et enfin ma liste avec une condition.
<form>
                    <select name="v" method="get" action="index.php" onchange='submit()'>
					      <?php
						  $l2 = mysql_query('SELECT distinct * FROM villes ORDER BY ville ASC')or die(mysql_error());
						  while ($l = mysql_fetch_array($l2))
						  {
						  ?>

					      <option value="<?php echo $l['ville']; ?>" 
						  
						  <?php if(isset($v))
						  {	  
						  echo 'selected="'.$v.'">';
						  }
						  else
						  {
						  echo '>';
						  }
						  echo $l['ville']; ?></option>
					      }
					      ?>
                    </select>
                  </form>   
La condition est simple, si $v existe, on met le "selected", sinon on affiche la liste normale, mais il ne se passe rien de rien, c' est tres frustrant.

Si quelqu' un avait une idée :/