2010-11-18 19 views
5

J'ai une table mysql qui contient les colonnes suivantes.Liste des valeurs Enum dans dropdown php mysql

Id  Name  Sex 

et colonne de sexe ont le même type de ENUM (« Homme », « Femme », « Non spécifié »)

Comment puis-je énumérer les valeurs ENUM dans un menu déroulant et faire valeur stockée actuelle comme sélectionnée

+1

À mon avis, en utilisant ENUM est, la plupart du temps, une erreur de conception. Vous avez toujours la possibilité de créer une table supplémentaire. Ce qui rendrait cette requête extrêmement facile à faire. Dans ce cas, le genre est fondamentalement un booléen (par exemple, vrai pour un homme, faux pour une femme, NULL pour une personne non spécifiée) et une table supplémentaire peut être exagérée, mais j'essaie définitivement d'utiliser ENUM le moins possible (pour ne pas dire jamais). –

+0

Essayez-vous d'énumérer les valeurs ENUM directement à partir de la structure de base de données ou essayez-vous simplement de savoir comment stocker la valeur ENUM sélectionnée dans un enregistrement? – enobrev

Répondre

5

Le fait qu'il s'agisse d'un champ enum n'a pas beaucoup d'importance lors de la création des champs select (dropdown). Les champs Enum se comportent de la même manière qu'un champ de saisie de texte, ils rejettent simplement les données qui ne correspondent pas à une option enum et stockent les données plus efficacement. Ainsi, interagir avec un champ enum est identique à interagir avec un champ de saisie de texte.

Vous aurez besoin d'un champ de sélection html normal:

<form> 
    <select name="gender"> 
    <option value="Unspecified">Unspecified</option> 
    <option value="Male">Male</option> 
    <option value="Female">Female</option 
    </select> 
</form> 

Et vous devez sélectionner votre valeur:

<form> 
    <select name="gender"> 
    <option value="Unspecified" <?php if($gender == "Unspecified") { echo "SELECTED"; } ?>>Unspecified</option> 
    <option value="Male" <?php if($gender == "Male") { echo "SELECTED"; } ?>>Male</option> 
    <option value="Female" <?php if($gender == "Female") { echo "SELECTED"; } ?>>Female</option 
    </select> 
</form> 

Cela peut être réparti en fonctions:

function gender_select($default_value='') { 
    $select = '<select name="gender">'; 
    $options = array('Unspecified','Male','Female',); 
    foreach($options as $option) { 
    $select .= write_option($option, $option, $default_value); 
    } 
    $select .= '</select>'; 
    return $select; 
} 

function write_option($value, $display, $default_value='') { 
    $option = '<option value="'.$value.'"'; 
    $option .= ($default_value == $value) ? ' SELECTED' : ''; 
    $option .= '>'.$display.'</option>'; 
    return $option; 
} 

Donc votre code définitif serait:

<form> 
<?php echo $gender_select($gender); ?> 
</form>