Option par défaut dans une liste déroulante

Eléphant du PHP | 256 Messages

09 mai 2011, 18:56

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

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

09 mai 2011, 20:37

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 ;) )

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 256 Messages

09 mai 2011, 20:42

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

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

09 mai 2011, 21:26

de rien :)

@+
Il en faut peu pour être heureux ......