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.

Herramientas personales