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!