Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/03/2007, 09:21
okioki
 
Fecha de Ingreso: marzo-2007
Mensajes: 13
Antigüedad: 18 años
Puntos: 0
Re: Select dependientes con 1 tabla

Este es el codigo que que viene en el FAQ del foro (primer link de sergi_climent) para dos select dependientes pero retocado para una sola tabla..y ahora con 3 select

Para 2 funciona, pero el tercero no se carga!!
tendria q poner esto para el segundo?
echo "<select name=\"mota1\" onChange=\"this.form.submit()\">\n";
¿Me podeis ayudar?Gracias
Código PHP:
<?
// datos de conexion a la BD.
$servidor  ="localhost"// host
$usuario   ="root"
$clave     ="";
$basedatos ="formularios"// 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['mota1']."<br>";
echo 
"Recibido id_tabla_hija: ".$_POST['mota2'];

} 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 ..
   
$mota1=$_POST['mota1'];
   
$mota2=$_POST['mota2'];
   
$mota3=$_POST['mota3'];
 
   
// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).
   
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";

   
// Formar Selec "Mota1".
   
echo "<select name=\"mota1\" onChange=\"this.form.submit()\">\n";
   echo 
"<option value=\"\"> Seleccione un Item </option>\n";

   
$SQLconsulta_padre="select distinct mota1 from motak";
   
$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 ($mota1 == $registro_padre['mota1']){
         echo 
"<option value=\"".$registro_padre['mota1']."\" selected>".$registro_padre['mota1']."</option>\n";
      } else {      

         echo 
"<option value=\"".$registro_padre['mota1']."\">".$registro_padre['mota1']."</option>\n";
        }

    }
   echo 
"</select>\n\n";

   
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.

   // Formar Select "Mota2"
   
echo "<select name=\"mota2\" onChange=\"this.form.submit()\">\n";
   echo 
"<option value=\"\"> Seleccione un Item </option>\n";
   
//echo "<select name=\"mota2\">\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($mota1)){

       
$SQLconsulta_hija="select distinct mota2 from motak where mota1='$mota1' order by mota2 ASC";
       
$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['mota2']."\">".$registro_hija['mota2']."</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.

   // Formar Select "Mota3"
   
echo "<select name=\"mota3\">\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($mota2)){

       
$SQLconsulta_hija2="select distinct mota3 from motak where mota1='$mota1' and mota2='$mota2' order by mota3 ASC";
       
$consulta_hija2 mysql_query($SQLconsulta_hija2,$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_hija2) != 0){
          While   (
$registro_hija2=mysql_fetch_assoc($consulta_hija2)){
            echo 
"<option value=\"".$registro_hija2['mota3']."\">".$registro_hija2['mota3']."</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_hija2); // Liberar memoria usada por consulta.

    
echo "</select>\n\n";
    
    
    echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
    echo 
"</form>\n";
}
?>

Última edición por okioki; 08/03/2007 a las 12:34