2010-11-18 81 views
5

Tengo una tabla mysql que contiene los siguientes cols.Lista de valores de Enum en menú desplegable php mysql

Id  Name  Sex 

y la columna de sexo tienen el tipo de enumeración ('Hombre', 'Mujer', 'no especificado')

Cómo puedo enumerar los valores de enumeración en una lista desplegable y hacer valor almacenado actual como seleccionado

+1

En mi opinión, el uso de ENUM es, la mayoría de las veces, un error de concepción. Siempre tienes la opción de crear una tabla extra. Lo que haría que esta consulta sea extremadamente fácil de hacer. En este caso, el género es básicamente un booleano (por ejemplo, verdadero para masculino, falso para femenino, NULL para no especificado) y una tabla extra puede ser exagerada, pero definitivamente intento usar ENUM lo menos posible (por no decir nunca)) –

+0

¿Está tratando de enumerar los valores ENUM directamente de la estructura de la base de datos o simplemente está tratando de descubrir cómo almacenar el valor ENUM seleccionado en un registro? – enobrev

Respuesta

5

El hecho de que sea un campo de enumeración no importa mucho al crear los campos de selección (desplegable). Los campos Enum se comportan igual que un campo de entrada de texto, simplemente rechazan cualquier dato que no coincida con una opción de enumeración y almacenan los datos de manera más eficiente. Por lo tanto, interactuar con un campo enum es lo mismo que interactuar con un campo de entrada de texto.

por lo que tendrá un html normal, seleccione el campo:

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

y se necesita para seleccionar el valor:

<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> 

Esto puede romperse hacia funciones:

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; 
} 

Así que su código final sería:

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