Récupérer une donnée SQL dans un menu déroulant.

damien200
Invité n'ayant pas de compte PHPfrance

23 janv. 2007, 13:01

Bonjour à tous,
Je voudrais que le menu tout seul sur la bonne <option>
Si type=3 alors le menu se mettra tout seul sur "Bar Concert"

Mais avec ce code ça marche pas... ça reste toujours sur "salle", le premier quoi....
Merci d'avance
<select name='ntype' value='$contenu[type]'>
<option value='1'>Salle</option>
<option value='2'>Asso/festival</option>
<option value='3'>Bar Concert</option>
<option value='4'>Mairie/autres..</option>
</select>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 janv. 2007, 13:04

Modération :
damien200, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.


Pour sélectionner une option par défaut, il te faut ajouter l'attribut "selected" dans la balise option qui va bien :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 65 Messages

23 janv. 2007, 13:12

salut je debute mais j'ai une facon pas tres optimisée de le faire, je pense que les programmeur ici seront mieux te renseigner mais je vais te donner mon idée tout de même :
if($contenu['type'] == 1){
      echo ("<select name='ntype' value='$contenu[type]'> 
     <option SELECTED value='1'>Salle</option> 
     <option value='2'>Asso/festival</option> 
     <option value='3'>Bar Concert</option> 
     <option value='4'>Mairie/autres..</option> 
     </select>");
}
elseif($contenu['type'] == 2){
      echo ("<select name='ntype' value='$contenu[type]'> 
     <option value='1'>Salle</option> 
     <option SELECTED value='2'>Asso/festival</option> 
     <option value='3'>Bar Concert</option> 
     <option value='4'>Mairie/autres..</option> 
     </select>");
}
// etc...

damien200
Invité n'ayant pas de compte PHPfrance

23 janv. 2007, 13:44

Merci à tous les deux pour vos réponses.
Je vais me dépatouiller avec ça.
Merci !!!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 janv. 2007, 13:47

Ce serait effectivement plus optimisé de tester directement dans chaque option, plutôt que de multiplier le select (surtout si une valeur ou un libellé change, ca évite d'avoir à le modifier n fois).

L'opérateur ternaire (cf. FAQ) est très pratique pour cela :
echo '<select name="ntype" value="'.$contenu[type].'">';
echo '<option '.(($contenu['type'] == 1) ? 'SELECTED' : '').' value="1">Salle</option>';
echo '<option '.(($contenu['type'] == 2) ? 'SELECTED' : '').' value="2">Asso/festival</option>';  
echo '<option '.(($contenu['type'] == 3) ? 'SELECTED' : '').' value="3">Bar Concert</option>';  
echo '<option '.(($contenu['type'] == 4) ? 'SELECTED' : '').' value="4">Mairie/autres..</option>';  
echo '</select>';
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...