MI BD esta compuesta de la siguiente forma:
TABLA CATEGORIAS
id_categoria
nombreCategoria
TABLA REZAGO
c_rezago
nombre_rezago
id_categoria
Lo que necesito es lo siguiente:
Cargar un primer combo que muestra las CATEGORIAS de mi BD cuando se de clic en un elemento, que se carguen los elementos de REZAGO que perteneces a ese id_categoría.
MI CODIGO ES EL SIGUIENTE
Código PHP :
<?php
//***** combos_combinados.php *****//
$host = "localhost";
$dbname = "ejemplo";
$user = "postgres";
$pw = "admin";
$port = "5432";
$packedString = "host=" . $host . " dbname=" . $dbname . " user=" . $user . " password=" . $pw . " port=" . $port;
$db = pg_connect("$packedString")or die('Could not connect: ' . pg_last_error());
if(1){}
?>
<html>
<head>
<script language="javascript">
// Función que rellena el segundo combo según el valor seleccionado en el primero.
// Se le pasa como parámetro el nombre del formulario desde el cuál se llama a la función,
// de ésta manera podemos llamarlo desde combos con el mismo nombre en una misma página pero
// desde distintos formularios
function rellenaCombo(formulario)
{
with (document.forms[formulario]) // Establecemos por defecto el nombre formulario pasado para toda la función.
{
var cat = id_categoria[id_categoria.selectedIndex].value; // Valor seleccionado en el primer combo.
var n = c_rezago.length; // Numero de líneas del segundo combo.
c_rezago.disabled = false; // Activamos el segundo combo.
for (var i = 0; i < n; ++i)
c_rezago.remove(c_rezago.options[i]); // Eliminamos todas las líneas del segundo combo.
c_rezago[0] = new Option("Seleccione rezago o categoria", 'null'); // Creamos la primera línea del segundo combo.
if (cat != 'null') // Si el valor del primer combo es distinto de 'null'.
{
<?php
// CODIGO PHP
// Para cada categoria, construimos el segundo combo con los rezago del mismo.
$cons_cat = @pg_exec($db, "SELECT * FROM categorias;");
for ($l = 0; $l < pg_numrows($cons_cat); ++$l)
{
$cen = @pg_fetch_object($cons_cat, $l);
?>
if (cat == '<?php echo $cat->id_categoria;?>')
{
<?php
// CODIGO PHP
// Construimos los valores del segundo combo con los rezagos de categorias
$cons_rez = @pg_exec($db, "SELECT * FROM rezago WHERE id_categoria = ".$cat->id_categoria." ORDER BY nombreCategoria;");
for ($m = 0; $m < pg_numrows($cons_rez); ++$m)
{
$rez = @pg_fetch_object($cons_rez, $m);
?>
c_rezago[c_rezago.length] = new Option("<?php echo $rez->nombre_rezago;?>", '<?php echo $rez->id_categoria;?>');
<?php
// CODIGO PHP
}
?>
}
<?php
// CODIGO PHP
}
?>
c_rezago.focus(); // Enviamos el foco al segundo combo.
}
else // El valor del primer combo es 'null'.
{
c_rezago.disabled = true; // Desactivamos el segundo combo (que estará vacío).
id_categoria.focus(); // Enviamos el foco al primer combo.
}
c_rezago.selectedIndex = 0; // Seleccionamos el primer valor del segundo combo ('null').
}
}
</script>
</head>
<body>
<table>
<tr>
<td>
<form name="datos" method="post" action="...">
<select name="id_categoria" onChange="rellenaCombo('datos');">
<option value="null" selected>Seleccione tipo de rezago o categoria
<?php
// CODIGO PHP
// Contruimos el primer combo con los valores de la tabla 'categorias'.
$cons_cat = @pg_exec($db, "SELECT * FROM categorias;");
for ($k = 0; $k < pg_numrows($cons_cat); ++$k)
{
$cat = @pg_fetch_object($cons_cat, $k);
echo " <option value=\"".$cat->id_categoria."\">".$cat->nombreCategoria."\n";
}
?>
</select>
</td>
<td>
<select name="c_rezago" disabled>
<option value="null">Seleccione rezago o categoria:
</select>
</td>
</form>
</tr>
</table>
</body>
</html>EL PROBLEMA ES QUE SOLO ME CARGAN LOS ELEMENTOS DEL PRIMER COMBO PERO NO ME CARGA LOS DEL SEGUNDO AL DAR CLIC
De antemano muchas gracias!
