Page 1 sur 1

Option par défaut dans une liste déroulante

Posté : 09 mai 2011, 18:56
par Castor Gaspard
Bonjour,

Je souhaite afficher une liste déroulante de pays dans un formulaire, en appelant les valeurs depuis un tableau.

Voici ma syntaxe...
<?php
$countries = array( 
'AF' => 'Afghanistan', 
'AL' => 'Albania', 
'DZ' => 'Algeria', 
'AS' => 'American Samoa', 
'AD' => 'Andorra'
); /* Je vous fais grâce de la liste intégrale !*/
?>
<p>
<label for="country">Pays</label>
<select name="country" id="country"> 
<?php 
foreach ($countries as $key => $val) 
{ 
?> 
	<option value="<?php echo $key; ?>" <?php echo ($_POST['country'] == $key) ? 'selected=""' : ''; ?>><?php echo $val; ?></option>
<?php 
} 
?>
</select>
</p>
Mon code fonctionne.

Cependant, j'aimerai proposer une valeur par défaut lors du premier affichage comme "France", sachant que ce sera le cas le plus... probable. :)

Mes recherches n'ont rien donné.

Assurément, si je place "France" en tête de liste, je remédie au problème, mais cette solution n'est pas très... futée !

Merci pour votre aide. :mrgreen:

Cordialement,

Gaspard

Re: Option par défaut dans une liste déroulante

Posté : 09 mai 2011, 20:37
par moogli
yop,

plutôt que d'utiliser directement $_POST (sachant que tu ne vérifie pas si cet index existe ;) ). Il serait plus intéressant d'utiliser une variable que tu affecte en fonction des paramètre que tu choisis. Cela peut être une validation de formulaire, mais aussi un cookie, une session, valeur d'url etc. L'avantage c'est que ton code sera plus évolutif :)

par exemple
<?php
$country = 'français';// ou l'index qui va bien
if (!empty($_POST['country'])) {
$country = $_POST['country'];
}
else {
if (!empty($_COOKIE['country'])) $country = $_COOKIE['country'];
else {
//etc
}
}
foreach ($countries as $key => $val)
{
$select = ($country == $key) ? 'selected="selected"' : '';
 <<<option
<option value="$key" $select>$val</option>
option;
<?php
}
?>
bon après tu choisis la hiérarchie que tu souhaite, mais cela te permet d'utiliser ton select quelque soit la provenance de l'info par défaut.

(a tester c'est dans l'idée de la chose ;) )

@+

Re: Option par défaut dans une liste déroulante

Posté : 09 mai 2011, 20:42
par Castor Gaspard
Bonsoir,

Merci, Moogli.

En fait, tu as parfaitement compris ma pensée, car je n'avais pas osé poursuivre le raisonnement jusque là dans ma question pour ne pas décourager un éventuel contributeur.

:mrgreen:

Merci. :D

Bien à toi,

Gaspard

Re: Option par défaut dans une liste déroulante

Posté : 09 mai 2011, 21:26
par moogli
de rien :)

@+