> Manuales > Taller de PHP

En el interior se encuentra una función que escribirá, en un formulario, un campo select con valores resultado de la devolución de una consulta. Cómodo y efectivo.

Durante el trabajo con formularios en PHP, en muchas ocasiones tenemos un campo select cuyos valores posibles se obtienen de una base de datos, por ejemplo, los países. En este taller vamos a mostrar una función que es capaz de escribir en un formulario un campo de select, obteniendo los valores de una tabla de la base de datos. Con esta función podemos olvidarnos de la complejidad de mostrar un campo select. Simplemente llamamos a la función, enviando los parámetros, y se encarga de mostrar el campo.

En el caso de los países, puede que sea una buena idea tener una tabla con la lista de países del mundo. En el formulario lo habitual es permitir escoger un país de la lista y enviar el código del país. De modo podemos estar seguros de que todos los usuarios han elegido un país de la lista, entre todos los posibles.

La tabla de países podría contener algo como esto:

Este es el código HTML de un posible formulario cuyo campo de países ha sido extraído de la anterior tabla:

<form> 
Nombre: <input type=text name="nombre"> 
<br> 
País: 
<select name=id_pais> 
   <option value=1>España 
   <option value=2>México 
   <option value=3>Argentina 
   <option value=4>Colombia 
   <option value=5>Chile ... 
</select>

Ahora vamos a ver cómo se haría la función que recorre la tabla de la base de datos para mostrar el select del país. Para empezar vamos a ver una lista de los parámetros que acepta.

El código de la función es el siguiente:

function saca_menu_desplegable($ssql,$valor,$nombre){ 
  	echo "<select name='$nombre'>"; 
  	$resultado=mysql_query($ssql); 
  	while ($fila=mysql_fetch_row($resultado)){ 
    	if ($fila[0]==$valor){ 
      	echo "<option selected value='$fila[0]'>$fila[1]";	
    	} 
    	else{ 
      	echo "<option value='$fila[0]'>$fila[1]";	
    	} 
  } 
  	echo "</select>";	
}

Se escribe el campo de formulario select, indicando el nombre del campo que se ha recibido por parámetro. Luego se realiza una búsqueda en la base de datos, ejecutando la sentencia SQL recibida por parámetro.

Más tarde se hace un recorrido del conjunto de registros que se han encontrado en la base de datos y se escriben cada uno de los option. Para cada uno de los registros se comprueba si su identificador es igual al que se desea marcar como valor predeterminado. En caso de serlo, se escribe el option con el atributo selected.

Un detalle importante es que la función necesita tener una conexión abierta con la base de datos, pues en caso contrario no se podría ejecutar la sentencia SQL.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual