J'ai besoin de conseils pour utiliser une fonction qui réalise un menu déroulant des départements français. Son auteur précise dans les commentaires du script :
<Commentaire>
"select" : retourne un menu déroulant avec les departements
// : passer l'attribut "name" du select comme deuxieme argument optionnel
// : passer un numero de departement comme troisieme argument optionnel
</commentaire>
Avec "select" à l'appel de la fonction ça fonctionne bien. Mon problème, c'est de trouvé comment passer le deuxième et troisième argument.
merci.
< début du script, j'ai réduit la liste des départements>
function departement($nom) {
// valeurs pour $nom :
// "tous" : retourne le tableau ci-dessous
// un tableau : traite chaque élément du tableau
// 21 : retourne un tableau contenant la corse (haute et basse)
// un entier: retourne le nom du département associé
// une chaine: retourne le numéro du département associé
// si rien n'est trouvé, retourne une chaîne vide.
$dept = array(
"01" => "Ain",
"02" => "Aisne",
"03" => "Allier",
"04" => "Alpes de Haute Provence",
"05" => "Hautes Alpes",
"06" => "Alpes Maritimes",
"07" => "Ardèche",
"08" => "Ardennes",
"09" => "Ariége",
"10" => "Aube",
"11" => "Aude",
"12" => "Averyon",
"13" => "Bouche du Rhône",
"14" => "Calvados",
"15" => "Cantal",
"16" => "Charente",
"17" => "Charente Maritime",
"18" => "Cher",
"19" => "Corrèze",
"2a" => "Corse du Sud",
"2b" => "Haute Corse",
"21" => "Côte d'Or",
"95" => "Val d'Oise"
);
if (is_string($nom) && ($nom == "tous")){
return $dept;
} elseif (is_string($nom) && ($nom == "select")){
if (func_num_args() >= 2){
$sel_nom = func_get_arg(1);
} else { $sel_nom = "";}
if (func_num_args() >= 3){
$checked = func_get_arg(2);
} else { $checked = "";}
$select = '<select name="'.$nom.'">';
while(list($nb, $nom) = each($dept)){
if ($nb == $checked){
$select .= "<option value=\"$nb\" selected>$nom</option>\n";
} else {
$select .= "<option value=\"$nb\">$nom</option>\n";
}
}
return $select .= '</select>';
} elseif (is_array($nom)){
$retour = array();
foreach ($nom as $n){
$retour[] = departement($n);
}
return $retour;
} elseif (is_int($nom) && ($nom == 21)){
$retour = array_kslice($dept, "2a", 2);
$r = array();
$r["21"] = $retour;
return $r;
} elseif (is_int($nom) || in_array($nom, array("2a","2b"))) {
if (isset($dept[$nom])){
return $dept[$nom];
}
return "";
} else {
$dept = array_flip($dept);
$nom = ucwords(strtolower($nom));
if (isset($dept[$nom])){
return $dept[$nom];
}
return "";
} < fin du script >