Page 1 sur 1

Comment faire un selected=selected sur un combo en dur

Posté : 06 mai 2009, 10:56
par consequences
Bonjour,

Je m'explique jamais faire un selected=selected sur le option dont la value sera egal au donnée de ma
requete un truc du genre $row['Statut']; dans une combobox avec une boucle while je sais faire mais
la avec une combo en dur je vois pas du tout comment faire car jai aucune variable avec laquelle
comparer



$index.="\t\t\t\t\t<tr><td  align=\"left\"> Statut admin <span class=\"rouge\"> * </span></td>\n";	
$index.="\t\t\t\t\t<td align=\"left\"><select name=\"modif_users_level\">\n";
							$index.="\t\t\t\t\t\t<option value=\"Administrateur\"> Administrateur </option>\n";
							$index.="\t\t\t\t\t\t<option value=\"Demi-administrateur\"> Demi-administrateur</option>\n";
							$index.="\t\t\t\t\t\t<option value=\"Préparateur de commandes\"> Préparateur de commandes </option>\n";																												
							$index.="\t\t\t\t\t</select>\n";
$index.="\t\t\t\t</td>\n";	
					$index.="\t\t\t\t\t\t\t</tr>\n";

Re: Comment faire un selected=selected sur un combo en dur

Posté : 06 mai 2009, 11:23
par VaN
Bonjour,

Je m'explique jamais faire un selected=selected sur le option dont la value sera egal au donnée de ma
requete un truc du genre $row['Statut']; dans une combobox avec une boucle while je sais faire mais
la avec une combo en dur je vois pas du tout comment faire car jai aucune variable avec laquelle
comparer



$index.="\t\t\t\t\t<tr><td  align="left"> Statut admin <span class="rouge"> * </span></td>\n";	
$index.="\t\t\t\t\t<td align="left"><select name="modif_users_level">\n";
$index.="\t\t\t\t\t\t<option value="Administrateur"> Administrateur </option>\n";
$index.="\t\t\t\t\t\t<option value="Demi-administrateur"> Demi-administrateur</option>\n";
$index.="\t\t\t\t\t\t<option value="Préparateur de commandes"> Préparateur de commandes </option>\n";																												
$index.="\t\t\t\t\t</select>\n";
$index.="\t\t\t\t</td>\n";	
					$index.="\t\t\t\t\t\t\t</tr>\n";
2 solutions me viennent en tête :

1. Tout de même passer par une boucle, en créant, à l'origine, un tableau en brut, de tes différentes options :
<?php
$statuts = array("Administrateur", "Demi-administrateur", "Préparateur de commandes");

foreach($statuts as $statut) {
    $statut == $row["Statut"] ? $selected = "selected="selected"" : $selected = "";
    echo "<option value="".$statut."" ".$selected.">".$statut."</option>";
}
?>
2. ou bien, tester la value sur chaque option :
$index.="\t\t\t\t\t\t<option value="Administrateur"";
if($row["Statut"] == "Administrateur") $index.= "selected="selected"";
$index .= "> Administrateur </option>\n";

$index.="\t\t\t\t\t\t<option value="Demi-administrateur";
if($row["Statut"] == "Demi-administrateur") $index.= "selected="selected"";
$index .= "> Demi-administrateur</option>\n";

$index.="\t\t\t\t\t\t<option value="Préparateur de commandes"";
if($row["Statut"] == "Préparateur de commandes") $index.= "selected="selected"";
$index .= "> Préparateur de commandes </option>\n";
La deuxième solution est quand même beaucoup moins propre.
Et surtout, la première est bcp plus modulable, puisqu'il te suffit de rajouter une entrée dans le tableau, le jour ou tu souhaite rajouter un nouveau statut : )

Et si je peux me permettre de te donner un conseil, c'est de créer une table qui va stocker les différents statuts, plutot que de les coder en brut dans la page.

Tu te fais une petite fonction qui va récupérer tes statuts en base de données, et tu utilise la méthode 1, sauf que ton tableau PHP n'est plus codé en brut, mais généré via ta requête. Et utilises des identifiants INT pour les value de tes options, et non des STRING

Posté : 06 mai 2009, 11:40
par consequences
Okay et encore merci, oui j'ai refait une combo avec un tableau tout simplement comme tu me la conseiller
c'est bien plus pratique en plus encore merci a toi

Posté : 06 mai 2009, 20:23
par zeus
Modération :
consequences, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.