Je souhaite afficher dans un champ select une liste de valeurs dont certaines sont récupérées d'une table.
L'affichage doit présenter les valeurs 'selected'.
1ère phase : récupération des valeurs (du client) dans un tableau:
Code : Tout sélectionner
$sql="SELECT nom FROM equipements WHERE `type_equipement` =4 and `ref_salle` = '$ref_salle' ";
$result0=mysql_query($sql);
$services_immobiliers= mysql_fetch_assoc($result0);
2ème phase : affichage du champ select
- Je récupère la liste de référence (table =$table)
- Je vérifie à chaque occurence de la liste de référence si elle existe dans le tableau du client. Si oui je la marque selected.
$sql="SELECT * FROM $table WHERE `objet` = 'services immobiliers'";
$resultat=mysql_query($sql);
echo "<select name='services_immobiliers[]' size='5' multiple='multiple' >";
while ($row = mysql_fetch_assoc($resultat)) {
$tt=$row[ref_referentiel];
if (isset($services_immobiliers) and in_array($tt,$services_immobiliers)) {
echo "<option value= {$row[ref_referentiel]} selected='selected' > {$row[libelle]} </option>";
}else{
echo "<option value= {$row[ref_referentiel]} > {$row[libelle]} </option>";
}
}
echo '</select><br>';
Le constat : 1° la phase 1 m'annonce récupérer 3 valeurs mais la phase 2 n'en teste que 2 ????
2° le selected fonctionne bien mais uniquement pour la 1ère valeur qui satisfait la condition. Les autres, bien qu'elles soient bien testées ne sont pas marquées comme selected.
Si vous avez une explication, je suis preneur car dans un autre script cela fonctionne bien mais la différence est que le tableau testé ne provient pas d'une table externe mais d'un array interne au script. A mon avis cela n'est pas la cause du problème.
Merci à vous et bonne journée.