Me encuentro trabajando en un proyecto que requiere la carga de una cantidad importante de selects. Al ser un proyecto dinamico y en expansion, he dedicido dedicar unos minutos a crear una funcion para cargar selects con valores obtenidos de una base de datos.
Como digo siempre, seguro que se puede mejorar y añadir funcionalidades o quitar limitaciones. Escucho.
Les dejo el script:
Código PHP:
function CargarSelect($tabla, $campos, $nombre_select, $seleccionar, $ordenar_por)
{
/*
Script desarrollado por Julisho.
Esta funcion carga un select con valores obtenidos de una base de datos, de acuerdo a los parametros especificados.
$tabla Es el nombre de la tabla de la cual se obtendran los datos
$campos Son los campos que se obtendran de la tabla. Si se requiere mas de un campo, se deben separar con el caracter "|"
$nombre_select Es el nombre que tendra el atributo name
$seleccionar Es el valor para seleccionar por defecto <option value="1" selected>Primero</option>
$ordenar_por Campo por el cual se ordenaran los resultados de la consulta
$clase_select Atributo class
$id_select Atributo id
Valores devueltos: $salida contiene el codigo del select
NOTA: Actualmente, solo se admiten dos campos para el valor $campos.
Modo de uso: echo cargarselect("provincias", "id|provincia", "idProvincia", 46, "provincia", "clase", "id");
*/
$mysql = new cMysql();
$mysql->Conectar();
if (strpos($campos, "|") !== false)
{
$CAMPOS = explode("|", $campos);
$query = 'select ';
for ($indice = 0; $indice < count($CAMPOS); $indice++)
{
if ($indice > 0) { $query .= ', '; }
$query .= $CAMPOS[$indice];
}
$query .= ' from ' . $tabla . ' order by ' . $ordenar_por;
}
else { $query = 'select ' . $campos . ' from ' . $tabla . ' order by ' . $ordenar_por; }
$consulta = $mysql->Consulta($query);
if (!$consulta) { $salida = '<div id="error">No es posible cargar las opciones. Recargue la pagina.</div>'; }
else
{
$salida = '<select name="'.$nombre_select.'"';
if (!empty($id_select)) { $salida .= ' id="' . $id_select . '"'; }
if (!empty($clase_select)) { $salida .= ' class="' . $clase_select . '"'; }
$salida .= '>'."\n";
while ($resultado = mysql_fetch_array($consulta, MYSQL_NUM))
{
$salida .= '<option value="'.$resultado[0].'"';
if ($seleccionar == $resultado[0]) { $salida .= ' selected'; }
$salida .= '>'.$resultado[1].'</option>' . "\n";
}
$salida .= '</select>' . "\n";
}
$mysql->Desconectar();
return $salida;
}
Hasta la proxima.