saLU2
combos.php
Código PHP:
   <? 
// datos de conexion a la BD. 
$servidor  ="localhost"; // host 
$usuario   ="";  
$clave     =""; 
$basedatos =""; // Indicar una Base de datos. 
 
// si se ha pulsao el boton enviar ($enviado) se procesa el formulario .. 
// Sino, se continua con el formulario y los nuevos valores de los Select .. 
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser 
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda. 
 
if (!empty($_POST['enviado'])){ 
 
// Procesar el formulario ... 
echo "Procesando formulario:<br>"; 
echo "Recibido id_tabla_padre: ".$_POST['id_padre']."<br>"; 
echo "Recibido id_tabla_hija: ".$_POST['id_hija']; 
 
} else { 
 
   // Conexión a la BD 
   $conexion = mysql_connect($servidor, $usuario, $clave) or die(mysql_error()); 
   mysql_select_db($basedatos, $conexion) or die(mysql_error()); 
 
   // Obtener el $id_padre del envio a si mismo del formulario .. 
   $id_padre=$_POST['id_padre']; 
 
   // 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=\"\"> Seleccione un Item </option>\n"; 
 
   $SQLconsulta_padre="SELECT * FROM tabla_padre"; 
   $consulta_padre = mysql_query($SQLconsulta_padre,$conexion) 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['item_texto']."</option>\n"; 
      } else { 
         echo "<option value=\"".$registro_padre['id']."\">".$registro_padre['item_texto']."</option>\n"; 
      } 
    } 
   echo "</select>\n\n"; 
 
   mysql_free_result($consulta_padre); // Liberar memoria usada por consulta. 
 
   // Formar Select "Hijo" 
   echo "<select name=\"id_hija\">\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 tabla_hija WHERE id_padre='$id_padre'"; 
       $consulta_hija = mysql_query($SQLconsulta_hija,$conexion) 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)){ 
            echo "<option value=\"".$registro_hija['id']."\">".$registro_hija['item_texto']."</option>\n"; 
          } 
        } else { 
            echo "<option value=\"\"> No hay registros para este Item </option>"; 
        } 
    } else { 
        echo "<option value=\"\"> <-- Seleccione un Item  </option>"; 
    }  
 
    mysql_free_result($consulta_hija); // Liberar memoria usada por consulta. 
     
    echo "</select>\n\n"; 
    echo "<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n"; 
    echo "</form>\n"; 
} 
 
?>    
Código:
  
 CREATE TABLE tabla_hija ( id tinyint(3) unsigned NOT NULL auto_increment, id_padre tinyint(3) unsigned DEFAULT '0' NOT NULL, item_texto varchar(255) NOT NULL, PRIMARY KEY (id) ); INSERT INTO tabla_hija VALUES ( '1', '1', 'tabla_hija - Item grupo 1 bla bla bla'); INSERT INTO tabla_hija VALUES ( '2', '2', 'tabla_hija - grupo 2 item 1'); INSERT INTO tabla_hija VALUES ( '3', '2', 'tabla_hija - grupo 2 item 2'); INSERT INTO tabla_hija VALUES ( '4', '3', 'tabla_hija - grupo 3 item probando'); INSERT INTO tabla_hija VALUES ( '5', '1', 'tabla_hija - item grupo 1 noseq pner'); CREATE TABLE tabla_padre ( id tinyint(3) unsigned NOT NULL auto_increment, item_texto varchar(255) NOT NULL, PRIMARY KEY (id) ); INSERT INTO tabla_padre VALUES ( '1', 'Grupo 1'); INSERT INTO tabla_padre VALUES ( '2', 'Grupo 2'); INSERT INTO tabla_padre VALUES ( '3', 'Grupo 3'); INSERT INTO tabla_padre VALUES ( '4', 'Grupo 4');
 
