¿Como enlazar comboboxes con informaci贸n de Base de Datos ?

Juan Jos?
07 de Octubre del 2002
Quiero desplegar en un ComboBox una consulta a
una base de datos, una vez hecho esto, seleccionar
uno de los elementos y dependiendo del valor que
elija llenar un segundo ComboBox.

Me explico, supongamos que tengo estas 2 tablas:

Tabla: AC_PAIS
+----------------------+
| acPaisId | acNombre |
+----------------------+
| 1 | Espa帽a |
|----------------------|
| 2 | Venezuela |
+----------------------+

Tabla: AC_CIUDAD
+-----------------------------------+
| acCiudadid | acNombre | acPaisId |
+-----------------------------------+
| 1 | Barcelona | 1 |
|-----------------------------------|
| 2 | Madrid | 1 |
|-----------------------------------|
| 3 | Caracas | 2 |
|-----------------------------------|
| 4 | Maracaibo | 2 |
+-----------------------------------+

Ambas est谩n relacionadas por el campo acPaisId

El primer ComboBox depliega el contenido de
AC_PAIS, si selecciono por ejemplo, "Espa帽a",
el segundo ComboBox deber铆a desplegar "Barcelona"
y "Madrid".

Me he encontrado con algunos ejemplos pero
no me han servido de mucho, usan javascript
para llenar unos arreglos y desplegarlos en
los ComboBox, pero yo quiero que se refleje
el contenido exacto que hay en la base de datos
para no tener que modificar c贸digo cada vez que
haga una actualizaci贸n.

Prob茅 algo con javascript pero el problema
es que al cargar la p谩gina se inicializan
todos los valores y no hay forma de que cada vez
que haga una selecci贸n me cambie el resultado
de la query que sirve para desplegar el segundo
ComboBox

A continuaci贸n env铆o el c贸digo de un ejemplo
que hize, es algo sencillo, carga un ComboBox
con los paises y la selecci贸n se guarda en la
variable sPais, que va cambiando a medida que
vayas cambiando la selecci贸n.

Si saben de alguna soluci贸n, sugerencia, lo que
sea para mi problema te agradecer铆a me echarais
una mano.

Hasta pronto y saludos


-- C贸digo
--------------------------------------------------------------------------------------

SCRIPT LANGUAGE="JavaScript">
var sPais=0;
/SCRIPT>

?
// Conexi贸n a la Base de Datos
$conex = odbc_connect("master", "", "");

// Query a la Tabla AC_PAIS
$qry01 = "Select acPaisId, acNombre " .
"from AC_PAIS " .
"order by acNombre asc";

$res01 = odbc_exec($conex, $qry01);

$cont01 = 0;
while(odbc_fetch_row($res01))
{
$do_paisid[$cont01] = odbc_result($res01, 1);
$do_paisnombre[$cont01] = odbc_result($res01, 2);
$cont01++;
}
?>

FORM NAME="frmDatosOferta" METHOD=post ACTION= ?=$PHP_SELF?>>

TABLE BORDER=1 WIDTH=100 >
TR>
TD>Pa铆s /TD>
TD>
SELECT NAME=selec_pais onChange="sPais =
this.options[this.selectedIndex].value">
? $a = 0; ?>
OPTION VALUE=0>- Seleccione un Pa铆s - /OPTION>
?
while ($a = ($cont01 - 1))
{
?>
OPTION VALUE= ?=$do_paisid[$a]?>>
?=$do_paisnombre[$a]?> /OPTION>
? $a++;
}
?>
/SELECT> /TD>
/TR>
/TABLE>
/FORM>

A HREF="#" onClick="alert(sPais);">Consultar sPais /A>

Felipe
07 de Octubre del 2002
No estoy seguro de que esto te sirva, o si es la respuesta que necesitas.
Creo haber entendido que a cada seleccion del 1er combo quieres que se acceda a la base de datos??Eso es tecnicamente posible, pero poco practico me temo.
Si estamos hablando de tablas con pocos datos te conviene cargar todos los datos de la segunda tabla en un array bidimensional de Javascript. Dependiendo de lo se seleccione traera unos datos u otros.
Creo que no es complicado...Y repito que esto es practico si no hablamos de tablas con muchos datos.
Siento no poder ayudarte mas.