tengo un formulario en el que tengo 2 pares de comboboxes que son dependientes,
uno se llama CDU que consta de 2 combos (el segundo depende del primero) y otro se llama Descriptors también con 2 combos (uno depende del otro).
En este foro encontré un código que (con PHP) rellenaba el segundo combo a partir del primero recargando la página. Como el formulario contiene más campos he hecho que se completaran
Código PHP:
<input type="text" name="titol" value="<?=$_POST['titol']?>">
El problema que tengo es el siguiente... para no tener 'tanto' código en el mismo archivo, he puesto la parte que maneja los combos dependientes en ficheros a parte de manera que en el formulario hago esto:
Código PHP:
<tr>
<td> CDU (*) </td>
<td colspan="5"> <? include 'formulario.php' ?></td>
</tr>
<tr>
<td>Descriptors</td>
<td colspan="5"> <? include 'desc.php' ?></td>
</tr>
Este es el codigo que tengo en formulario:
Código PHP:
<?
$id_padre=$_POST['id_padre'];
$id_hija=$_POST['id_hija'];
// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).
// echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";
// Formar Selec "Padre".
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n";
echo "<option value=\"\">Seleccioni una opció</option>\n";
$SQLconsulta_padre="SELECT * FROM CDU_general";
$consulta_padre = mysql_query($SQLconsulta_padre,$db) or die(mysql_error());
while ($registro_padre=mysql_fetch_assoc($consulta_padre)){
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.
// Se selecciona en consecuencia (selected) la opción elegida.
if ($id_padre == $registro_padre['id']){
echo "<option value=\"".$registro_padre['id']."\" selected>".$registro_padre['text']."</option>\n";
} else {
echo "<option value=\"".$registro_padre['id']."\">".$registro_padre['text']."</option>\n";
}
}
echo "</select>\n\n";
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.
// Formar Select "Hijo"
echo "<select name=\"id_hija\" onblur='cambiar();'>\n";
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo
// se muestra el mensaje de "seleccine un item" (del select padre).
if (!empty($id_padre)){
$SQLconsulta_hija="SELECT * FROM CDU_especific WHERE id_pare='$id_padre'";
$consulta_hija = mysql_query($SQLconsulta_hija,$db) or die(mysql_error());
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
if (mysql_num_rows($consulta_hija) != 0){
while ($registro_hija=mysql_fetch_assoc($consulta_hija)){
if ($id_hija == $registro_hija['id_hija']){
echo "<option value=\"".$registro_hija['id']."\" selected>".$registro_hija['text']."</option>\n";
}else{
echo "<option value=\"".$registro_hija['id']."\">".$registro_hija['text']."</option>\n";
}
}
} else {
echo "<option value=\"\"> No hay registros para este Item </option>";
}
} else {
echo "<option value=\"\"><-- Seleccioni una opció</option>";
}
mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.
echo "</select>\n\n";
?>
espero que me puedan echar un cable, por favor.
Gracias y espero haber sido explicativa....