Comment faire un selected=selected sur un combo en dur

Eléphant du PHP | 63 Messages

06 mai 2009, 10:56

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";
Avec le temps qui s'écoule je trouve que je m'en sort de mieux en mieux :)

VaN
Mammouth du PHP | 1107 Messages

06 mai 2009, 11:23

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

Eléphant du PHP | 63 Messages

06 mai 2009, 11:40

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
Avec le temps qui s'écoule je trouve que je m'en sort de mieux en mieux :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 mai 2009, 20:23

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer