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

</select> 

Quiero rellenar la etiqueta anterior con los valores de la base de datos.Usando PHP para poblar un <select></select>?

He escrito el código php hasta esto.

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

} 

$ fila es ir a buscar obtener los valores correctos .. cómo agregarlo a la <select>

por favor ayuda ... Soy nuevo en la programación

Respuesta

8

¿Qué pasa algo como esto:

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

Por supuesto, depende de usted para decidir qué artículos de $row se debe utilizar para el valor y el texto de cada <option>


Sólo asegúrese está escapando de los datos que provienen de su base de datos, especialmente si puede contener HTML; como está produciendo HTML, esto se puede hacer con htmlspecialchars o htmlentities.

Tenga en cuenta que podría tomar un par de parámetros adicionales que no utilicé en mi ejemplo: configurarlos puede ser útil, dependiendo del juego de caracteres que esté usando.

+0

muy buena respuesta ME AYUDO – humphrey

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

Reemplazar 'whatever_index' con la columna nombre que está buscando

+0

Creo que ha olvidado el valor del atributo – Kevin

+0

Si no se especifica ningún atributo de valor, se presentará el texto entre /usa. –

3

se puede ver cuál está disponible para su uso al hacer esto en el tiempo:

var_dump($result); 
exit; 

que imprimirá el primer resultado y su contenido de matriz. Luego puede ver qué campo desea usar para completar la opción. A partir de ahí, usted haría algo como:

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

Por supuesto, esto es un ejemplo muy básico, y como han dicho otros es posible que desee limpiar los datos antes de ponerlo en una forma.

+1

+1 para usar una matriz, no funciones de búsqueda de mysql, dentro del 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>'; 

Algunos Además del código de Pascal MARTIN, para la selección automática de algún valor predefinido

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

I editied la última entrada de este y funciona perfectamente. El único inconveniente que tengo ahora es una vez que el usuario ha enviado el formulario en el menú desplegable se queda en blanco ... ¿Alguien sabe una solución 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

Todas las respuestas anteriores funcionarán, pero no son adecuados y requieren un trabajo extra. No debe usar echo para enviar a la pantalla y no es necesario. El siguiente ejemplo supone que está utilizando objetos que contienen datos, pero se entiende la idea.

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

El punto que usted no tiene que repetir el html