Remplissage dynamique d'une liste menu en php

Résolu/Fermé
Signaler
-
 konnors -
Bonjour à tous,
Je suis un assezrécent utlisateu de php, et je m'en sort plutôt pas mal. Mais depuis deux jour je bute sur un os grave. J'ai un champ de formulaire qui est une liste de menu (select) que je dois remplir depuis une base de données; ça c'est fait, le hic est que je dois afficher une des valeurs de cette liste par défaut (selected=selected) là encore je crois tenuir le bon bout, mais je m'enmêle les pédales avec les positions des simples cotes ('), des points (.) et des doubles cotes("). Voici mon code:

<select size=1 name="id_pro" id="id_pro" >
<option value="choix">Choisissez un profil svp</option>
<?php
$sqls = "SELECT id_pro, lib_pro FROM profil WHERE (sta_pro='oui' ) ORDER BY id_pro"; //and id_pro!='super'}
$ReqLogs = mysql_query($sqls);
while ($resultats = mysql_fetch_row($ReqLogs))
{
echo "<option value='$resultats[0]' if($resultats[0]=='".$midpro."'){echo 'selected=selected';} >".$resultats[1]."</option>";
}
?>
</select>
Où $midpro désigne la valeur à laquelle sont comparées les profils chargés et qui détermine en cas d'égalité le profil à afficher par défaut au chargement de la page
Les profils sont tous bien chargés mais c'est le message "Choisissez un profil svp" qui est affichéé par défaut si quelqu'un pouvait m'aider à le faire marcher correctement je lui en serait très reconnaissant, merci d'avance

1 réponse

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
854
Bonjour,

Effectivement tu t'embrouille "grave" les pédales :)
Tu ne peux pas faire un test PHP à l'intérieur d'un echo pour afficher, en tout cas pas de la manière dont tu l'as codé.

Pour faire plus simple :
while ($resultats = mysql_fetch_row($ReqLogs))
{
   if($resultats[0]=='".$midpro."'){
      echo "<option value='".$resultats[0]."' selected='selected'>";
   }
   else {
      echo "<option value='".$resultats[0]."'>";
   }
   echo $resultats[1]."</option>";
} 


Bonjour kij_82, Merci bien pour le coup de main, c'est vrai que je vois déjàmieux ma bétise, mais malheuresement je n'obtient toujours pas le résultat attendu.
Je beau remplacer toute la partie concernée dans mon code par le script que tu m'as proposé rien n'y fait, il continu à ignorer le selected et m'affiche toujours la phrase de choix d'un profil.
Je ne perd pas espoir, et je vais continuer à farfouiller.
Tu me semble bien plus habile que moi, alors sauf erreur de ma part . Si tu peux jettes un coup d'oeil sur le code résultant de ton script dans mon code , mais sincèrement je n'y vois rein salut et merci encore de m'avoir répondu aussi vite.
Voici ce fameux bout de code:

<select size=1 name="id_pro" id="id_pro" >
<option value="choix">Choisissez un profil svp</option>
<?php

//remplissage

$sqls = "SELECT id_pro, lib_pro FROM profil WHERE (sta_pro='oui' ) ORDER BY id_pro"; }
$ReqLogs = mysql_query($sqls);
while ($resultats = mysql_fetch_row($ReqLogs))
{
if($resultats[0]=='".$midpro."')
{
echo "<option value='".$resultats[0]."' selected='selected'>";
}
else
{
echo "<option value='".$resultats[0]."'>";
}
echo $resultats[1]."</option>";
}

/*while ($resultats = mysql_fetch_row($ReqLogs))
{
echo "<option value='$resultats[0]' if($resultats[0]=='".$midpro."'){echo 'selected=selected';} >".$resultats[1]."</option>";
} */ Mon code à moi
?>
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
854 > konnors
Re,

Entre deux petites réunions :)

Effectivement l'erreur saute aux yeux et je m'excuse puisque c'est moi qui ai mal recopié / corrigé la première fois.

Ton test suivant n'est pas un test (enfin pas correct du tout):
if($resultats[0]=='".$midpro."') 


Il faut le remplacer par ceci :
if($resultats[0]== $midpro ) 


Voilà pourquoi ça ne passe jamais dans ton premier cas.
Fais moi savoir si ça ne fonctionne toujours pas.

>
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013

Merci beaucoup c'est dans la poche cette fois ça marche! je crois j'ai finalement pas gacher toute ma journée, à bientôt et merci une fois de plus!!! konnors