Tematica: Generar ComboBox dinamicamente!!!
Pregunta: Como puedo hacer para generar combobox dinamicamente con datos de una DB ?
Respuesta:
Cargar_combo.php
Código PHP:
<?php
include("funciones.php");
cargar_combo("tabla","id","opcion");
?>
Bueno en el doc cargar_combo.php lo que hago es incluir el archivo con las funciones, en este caso con el mismo nombre. y llamamos a la funcion cargar_combo("LA_TABLA","VALOR_QUE_OBTIENE_EL_VALU E","OPCION_A_MOSTRAR");
Código PHP:
<?php
function cargar_combo($tabla,$value,$opt){
$enlace = mysql_connect("localhost", "root", "") or die("No pudo conectarse : " . mysql_error());
mysql_select_db("prueba") or die("No pudo seleccionarse la BD.");
$sql = "select * from ".$tabla;
$res = mysql_query($sql) or die (mysql_error());
echo "<select name='$tabla' class='botones'>";
while($fila = mysql_fetch_assoc($res)){
echo "<option value='$fila[$value]'>$fila[$opt]</option>";
}
echo "</select>";
mysql_close($enlace);
}
?>
La función se encarga de generar el campo con los datos que nosotros pasamos como parametros, y el nombre del select es el nombre de la tabla... Saludos, y espero que les sea util!!!
AGREGADO EL 07/02/06
gonazalezmfrank me ha mandado una modificacion del codigo, que permite establecer un valor selecionado si lo hubiera ... y tambien nos deja que le mandemos el nombre que queremos que tenga el select, por si llegamos a necesitar hacer el mismo select mas de una ves ...
La funcion ...
Código PHP:
<?
#################################################################################################
#
# filename : config.php
#
#################################################################################################
function cargar_combo($tabla,$varform,$old_valor,$value,$opt){
$sql = "select * from ".$tabla;
$res = mysql_query($sql) or die (mysql_error());
if (mysql_num_rows($res) != 0 ) {
echo "<select name=\"$varform\">\n";
echo "<option value=\"\"> Seleccione ... </option>\n";
while($fila = mysql_fetch_assoc($res)){
if ($old_valor == $fila[$value]){
echo "<option value=\"".$fila[$value]."\" selected>".$fila[$opt]."</option>\n";
} else {
echo "<option value=\"".$fila[$value]."\">".$fila[$opt]."</option>\n";
}
}
echo "</select>";
mysql_free_result($res);
return $varform;
}else{
echo "No Existen Registros en la Base de Datos..";
}
}
?>
el codigo aqui ...
Código PHP:
<?php
// incluye la funcion del combobox
require("config.php");
// conecta a la BD
require("conectar.php");
// Muestra el Combobox para seleccionar el valor de la BD
//
// Considera que existe la funcion en el archivo de funciones o configuracion
// Considera que tiene un script para conectarse a la BD - es utilizado segun se quiera
//
// Variables que se le pasan a la funcion
// 1. Nombre de la Tabla
// 2. Nombre de la Variable que requiere retorno en el Form
// 3. Variable que contiene el valor del <Selected> en la Sentencia <Select> de la funcion
// 4. Valor del Campo Indice para la Tabla
// 5. Valor que se quiere mostrar en el Front-END
//
// Si tiene un valor seleccionado este se coloca en la variable $old_valor para pasarlo a
// la funcion si no existe o es vacio simplemente no pasa nada.....
//
if (empty($_POST['muestra'])){
$old_valor = $_POST['tipoobs'];
echo "<form action='combotest.php' method='POST'>";
cargar_combo("tipo_observa","tipoobs",$old_valor,"ID","tipo_obs");
echo "<input type='submit' value='mostrar' name='muestra'>
</form>";
}else{
// Muestra el resultado
echo " Valor Seleccionado : ".$tipoobs;
echo "<form action='combotest.php' method='POST'>";
echo "<input type='hidden' name='tipoobs' value='$tipoobs'>";
echo "<input type='submit' name='submit' value='Otro Valor'>
</form>";
}
// cierro la BD
mysql_close();
?>
gracias
gonazalezmfrank