PHP:¿Cómo puedo hacer para generar combobox dinámicamente con datos de una DB?
De Foros del Web
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 parámetros, y el nombre del select es el nombre de la tabla... Saludos, y espero que les sea útil!!!
AGREGADO EL 07/02/06
gonazalezmfrank me ha mandado una modificación del código, que permite establecer un valor selecionado si lo hubiera ... y también nos deja que le mandemos el nombre que queremos que tenga el select, por si llegamos a necesitar hacer el mismo select más de una vez ...
La función ...
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 código aquí...
Código PHP:
<?php // incluye la función 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
--turco_7 14 Set 2005
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
