2010-03-17 5 views
8
<select name="select"> 

</select> 

Je souhaite remplir la balise ci-dessus avec les valeurs de la base de données.L'utilisation de PHP pour remplir un <select></select>?

J'ai écrit le code php jusqu'à présent.

while($row=mysql_fetch_array($result)) 
{ 

} 

$ row est aller chercher chercher de bonnes valeurs .. comment l'ajouter à la <select>

s'il vous plaît aider ... Am nouveau à la programmation

Répondre

8

Qu'en est-il quelque chose comme ceci:

echo '<select name="select">'; 
while($row=mysql_fetch_array($result)) 
{ 
    echo '<option value="' . htmlspecialchars($row['column_for_value']) . '">' 
     . htmlspecialchars($row['column_for_label']) 
     . '</option>'; 
} 
echo '</select>'; 

Bien sûr, à vous de décider quels éléments de $row doit être utilisé pour la valeur et le texte de chaque <option>


Assurez-vous vous échappez aux données qui proviennent de votre base de données - en particulier si elles peuvent contenir du code HTML; Lorsque vous générez du code HTML, vous pouvez le faire avec htmlspecialchars ou htmlentities. Notez que ceux-ci peuvent prendre quelques paramètres supplémentaires que je n'ai pas utilisés dans mon exemple - la configuration de ceux-ci peut être utile, en fonction du jeu de caractères que vous utilisez.

+0

très bonne réponse IL m'a aidé – humphrey

0
echo '<select>'; 
while($row=mysql_fetch_array($result)) { 
    echo '<option>'.$row['whatever_index'].'</option>'; 
} 
echo '</select>'; 

Remplacer 'whatever_index' avec la colonne nom que vous allez chercher.

+0

Je pense que vous avez oublié la valeur de l'attribut – Kevin

+0

Si aucun attribut de valeur est spécifiée, le texte entre sera soumis/utilisé. –

3

Vous pouvez voir ce qui est disponible à utiliser en faisant cela dans le temps:

var_dump($result); 
exit; 

qui imprimera le premier résultat et son contenu du tableau. Ensuite, vous pouvez voir quel champ vous voulez utiliser pour remplir l'option. De là, vous feriez quelque chose comme:

foreach ($result['field'] as $field) { 
    print '<option value="'.$field.'">$field</option>'; 
} 

Bien sûr, cela est un exemple très basique, et que d'autres ont noté que vous pouvez nettoyer les données avant de le mettre en forme.

+1

+1 pour l'utilisation d'un tableau, pas de fonctions de récupération mysql, à l'intérieur du foreach. –

3

$selected_value="selected_value"; 
echo '<select name="select">'; 
while($row=mysql_fetch_array($result)) 
{ 
    if($selected_value==htmlspecialchars($row['column_for_value'])) 
    $selected=' selected'; 
    else 
    $selected=''; 
    echo '<option value="'.htmlspecialchars($row['column_for_value']).'"'.$selected.'>' 
    .htmlspecialchars($row['column_for_label']). 
    '</option>'; 
} 
echo '</select>'; 

Certains plus du code Pascal MARTIN, pour la sélection automatique d'une certaine valeur prédéfinie

1
echo "<select>"; 
while($option = mysql_fetch_array($result)) { 
    echo "<option>".htmlspecialchars($option['column'])."</option>"; 
} 
echo "</select>"; 
3

J'editied la dernière entrée à cela et il fonctionne parfaitement. Le seul souci que j'ai maintenant une fois que l'utilisateur a soumis le formulaire dans le menu déroulant se vide ... Quelqu'un sait-il une solution simple

echo '<select name="course" id="course" >'; 
       while($option = mysql_fetch_array($course_results)) { 
echo "<option value=".htmlspecialchars($option['cid']).">".htmlspecialchars($option['cname'])."</option>"; 
} 
echo "</select>"; 
2

Toutes les réponses ci-dessus fonctionnent, mais ne sont pas bon et nécessitent un travail supplémentaire. Vous ne devriez pas utiliser echo pour sortir à l'écran et vous n'avez pas à le faire. L'exemple ci-dessous suppose que vous utilisez des objets contenant des données, mais vous avez l'idée.

<select name="sales_person"> 
     <?php foreach ($sales_people as $sales_person){?> 
      <option value="<?=$sales_person->first_name?> <?=$sales_person->last_name?>"><?=$sales_person->first_name?> <?=$sales_person->last_name?></option> 
     <?php }?> 
     </select> 

Le point étant que vous ne devez pas faire écho à la html

Questions connexes