Tema: FAQ's de PHP
Ver Mensaje Individual
  #145 (permalink)  
Antiguo 14/09/2005, 19:45
Avatar de turco_7
turco_7
 
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 21 años
Puntos: 19
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) != ) {
        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
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!

Última edición por turco_7; 07/02/2006 a las 07:18