Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/03/2007, 09:33
sergi_climent
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 4 meses
Puntos: 10
Re: Select dependientes con 1 tabla

Hola de nuevo okioki,

aqui hay un ejemplo:
http://www.tunait.com/tutoriales/lis...esphpmysql.php

Cita:
no me he atrevido con el ejemplo de Ajax,
porque no te has atrevido?
la web te quedara mucho mejor si cuando escoges un select no se recarga la pagina para cada cambio q haces...

aunque si quieres le exo un vistazo a tu codigo a ver q se puede hacer...
EDITADO: seria algo asi... no lo he probado por falta de tiempo... pero mas o menos para q cojas la idea quizas te sirva
Código PHP:
<? 
// datos de conexion a la BD. 
$servidor  ="localhost"// host 
$usuario   ="root";  
$clave     =""
$basedatos ="formularios"// Indicar una Base de datos. 

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). 
 
?> 
   <form action="<?=$_SERVER['PHP_SELF']?>" method="POST">         
        <select name="mota1" onChange="this.form.submit()"> 
        <option value=""> Seleccione un Item </option> 
    <? 
   $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)){ 
    
?> 
        <option value="<?=$registro_padre['mota1']?><?  if ($mota1 == $registro_padre['mota1']){?>selected <? ?>><?=$registro_padre['mota1']?></option> 

    <?    
    
}  //Cerramos wl WHILE  
   
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta. 
    
?> 
        </select> 
        
<!-- SEGUNDO SELECT -->         
       <select name="mota2" onChange="this.form.submit()"> 
    <? 
      
if (!empty($mota1)){ 

       
$SQLconsulta_hija="select distinct mota2 from motak where mota1='$mota1'"
       
$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)){ 
    
?> 
        <option value="<?=$registro_hija['mota2']?>"<? if ($mota2 == $registro_hija['mota2']){ ?> selected <? ?>><?=$registro_hija['mota2']?></option> 
     <?     //fin WHILE 
        
} else { 
    
?> 
        <option value=""> No hay registros para este Item </option> 
    <?    
    } else { 
    
?> 
       <option value="">--> Seleccione un Item  </option> 
   <? 
   
mysql_free_result($consulta_hija); // Liberar memoria usada por consulta. 
   
?> 
    </select> 
    
   <!-- TERCER SELECT -->   
   <select name="mota3">   
    <?       
   
if ((!empty($mota1)) && (!empty($mota2))){ 

       
$SQLconsulta_nieta="select distinct mota3 from motak3 
                             where mota1='$mota1' AND mota2='$mota2'"

       
$consulta_nieta mysql_query($SQLconsulta_nieta,$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_nieta) != 0){ 
          while  (
$registro_nieta=mysql_fetch_assoc($consulta_nieta)){ 
    
?> 
        <option value="<?=$registro_nieta['mota3']?><? if ($mota3 == $registro_nieta['mota3']){ ?> selected <? ?>><?=$registro_nieta['mota3']?></option> 
    <?     
        } else { 
    
?> 
           <option value=""> No hay registros para este Item </option> 
    <?  
    } else { 
    
?> 
        <option value=""> --> Seleccione un Item  </option> 
    <? }  
    
mysql_free_result($consulta_nieta); // Liberar memoria usada por consulta. 
    
?> 
    </select> 
<input type="submit" name="enviado" value=" Enviar " > 
</form> 
<? 

?>
solo una cosa mas... te aconsejo para q no hagas trabajar excesivamente a tu servidor, q el codigo HTML no lo incrustes en PHP, es decir abre y cierra <??> para cada caxo de PHP q uses, y deja q el navegador el usuario se coma el HTML mientras tu servidor solo hace la parte de PHP...

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 09/03/2007 a las 02:12