Función en PHP para recuperar registros a una etiqueta select

Ya he visto en varios foros a personas preguntando como poder recuperar registros de una base de datos MySQL a un campo de selección (<SELECT>), con esto lo que podemos hacer es por ejemplo desde en un formulario de registro, permitir a el usuario seleccionar su ciudad:

<?php
//Brian Urban - https://www.brianur.info
function genera_select($nombre,$id,$tabla,$campo_visual,$campo_valor,$default=0){
 $sql="select $campo_valor, $campo_visual from $tabla order by $campo_visual";
 $result= mysql_query($sql);
 echo "<select name='$nombre' id='$id'>";
 echo "<option value='0'>Seleccione opcion</option>";
 while ($row=mysql_fetch_assoc($result)){
 $id= $row[$campo_valor];
 $texto= $row[$campo_visual];
 $sel="";
 if ($default==$id){
 $sel="Selected";
 }
 echo "\n <option value='$id' $sel>$texto</option>";
 }
 echo "</select>";
}
?>

Parámetros:

$nombre: Nombre del select.

$id: ID del select.

$tabla: Nombre de la tabla de la base de datos.

$campo_visual: El campo en la base de datos que tiene el nombre de la ciudad en este caso.

$campo_valor: El campo del ID de la ciudad en la base de datos.

$default: Por defecto esta en 0, no es obligatorio darle un valor, en caso de que se quiera darle algún valor debe ser un numero. Lo que hace es asignar a un registro como el valor por defecto del select.

Ejemplo de uso de la función:

genera_select('ciudad','ciudad','ciudades','nombre','idciudad',3);

Pueden hacer las modificaciones que necesiten en su propio caso.

  4 Comentarios

  1. Mac Howard   •  

    Saludos.

    No me funciona., Debo estar haciendo algo mal. me podrias ayudar

  2. Lexie Sorcier   •  

    Excelente explicación, tenía un rato buscando y no había nada que pudiera ayudarme. Muchas gracias!

  3. Pablo   •  

    Muchas gracias, me resulto 100%, en la base de datos tengo una tabla con las ciudades guardadas y las muestro en el select de un formulario de registro, pero lo que quiero hacer es que caputre la ciudad seleccionada en el select y que al registrarse, que quede ese campo guardado en la tabla “usuarios” de la base de datos. Osea en resumen, mi pregunta es:
    como capturar lo seleccionado en el SELECT y que quede ingresado en la base de datos. Te lo agradeceria mucho!. Saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *