Foros del Web » Programando para Internet » PHP »

Problema con listas dependientes.

Estas en el tema de Problema con listas dependientes. en el foro de PHP en Foros del Web. Hola, utilice este codigo para crear un par de listas dependientes: http://www.forosdelweb.com/664999-post108.html . Yo lo edite para que funcione con mis tablas pero surgio un ...
  #1 (permalink)  
Antiguo 27/09/2009, 21:20
Avatar de manumaf  
Fecha de Ingreso: mayo-2007
Ubicación: Argentina
Mensajes: 854
Antigüedad: 17 años, 6 meses
Puntos: 6
Problema con listas dependientes.

Hola, utilice este codigo para crear un par de listas dependientes: http://www.forosdelweb.com/664999-post108.html.

Yo lo edite para que funcione con mis tablas pero surgio un problema que no lo puedo reparar, los resultados que me devuelve $_POST['id_padre'] y $_POST['id_hija'] son:
$_POST['id_padre'] = 4 (o algun otro numero)
$_POST['id_hija'] = "" (osea nada)

Asi me quedo el código ami editado:
Código PHP:
<?php
//conexión a mysql

if (!empty($_POST['enviado'])){

echo 
"Procesando formulario:<br>";
echo 
"Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";
echo 
"Recibido id_tabla_hija: ".$_POST['id_hija'];

} else {

   
$conexion mysql_connect($servidor$usuario$clave) or die(mysql_error());
   
mysql_select_db($basedatos$conexion) or die(mysql_error());

   
$id_padre=$_POST['id_padre'];

   echo 
"<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";

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

   
$SQLconsulta_padre="SELECT * FROM lenguajes";
   
$consulta_padre mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());

   While   (
$registro_padre=mysql_fetch_assoc($consulta_padre)){
      if (
$id_padre == $registro_padre['id']){
         echo 
"<option value=\"".$registro_padre['id']."\" selected>".$registro_padre['lenguaje']."</option>\n";
      } else {
         echo 
"<option value=\"".$registro_padre['id']."\">".$registro_padre['lenguaje']."</option>\n";
      }
    }
   echo 
"</select>\n\n";

   
mysql_free_result($consulta_padre); 
 
   echo 
"<select name=\"id_hija\">\n";

   if (!empty(
$id_padre)){

       
$SQLconsulta_hija="SELECT * FROM categorias WHERE id_lenguaje ='$id_padre'";
       
$consulta_hija mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
 
       if (
mysql_num_rows($consulta_hija) != 0){
          While   (
$registro_hija=mysql_fetch_assoc($consulta_hija)){
            echo 
"<option value=\"".$registro_hija['id']."\">".$registro_hija['categoria']."</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); 
    
    echo 
"</select>\n\n";
    echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
    echo 
"</form>\n";

?>
Las estructuras de mis tablas son iguales a las del script original:

Lenguajes:
id / lenguaje
1 / lenguaje 1
2 / lenguaje 2

Categorias:
categoria / id_lenguaje
categoria 1 / 2
categoria 2 / 1


Cual es el problema?
Muchas gracias de antemano
  #2 (permalink)  
Antiguo 27/09/2009, 22:18
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 3 meses
Puntos: 139
Respuesta: Problema con listas dependientes.

Hay un pequeno lapsus en los while
Intenta con este ejemplo

Código php:
Ver original
  1. <?php
  2. //conexión a mysql
  3.  
  4. if (!empty($_POST['enviado'])){
  5.  
  6. echo "Procesando formulario:<br>";
  7. echo "Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";
  8. echo "Recibido id_tabla_hija: ".$_POST['id_hija'];
  9.  
  10. } else {
  11.  
  12.    $conexion = mysql_connect($servidor, $usuario, $clave) or die(mysql_error());
  13.    mysql_select_db($basedatos, $conexion) or die(mysql_error());
  14.  
  15.    $id_padre=$_POST['id_padre'];
  16.  
  17.    echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";
  18.  
  19.    echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n";
  20.    echo "<option value=\"\"> Seleccione un Item </option>\n";
  21.  
  22.    $SQLconsulta_padre="SELECT * FROM lenguajes";
  23.    $consulta_padre = mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());
  24.  
  25.    while($registro_padre=mysql_fetch_assoc($consulta_padre)){
  26.       if ($id_padre == $registro_padre['id']){
  27.          echo "<option value=\"".$registro_padre['id']."\" selected>".$registro_padre['lenguaje']."</option>\n";
  28.       } else {
  29.          echo "<option value=\"".$registro_padre['id']."\">".$registro_padre['lenguaje']."</option>\n";
  30.       }
  31.     }
  32.    echo "</select>\n\n";
  33.  
  34.    mysql_free_result($consulta_padre);
  35.  
  36.    echo "<select name=\"id_hija\">\n";
  37.  
  38.    if (!empty($id_padre)){
  39.  
  40.        $SQLconsulta_hija="SELECT * FROM categorias WHERE id_lenguaje ='$id_padre'";
  41.        $consulta_hija = mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
  42.  
  43.        if (mysql_num_rows($consulta_hija) != 0){
  44.           while($registro_hija=mysql_fetch_assoc($consulta_hija)){
  45.             echo "<option value=\"".$registro_hija['id']."\">".$registro_hija['categoria']."</option>\n";
  46.           }
  47.         } else {
  48.             echo "<option value=\"\"> No hay registros para este Item </option>";
  49.         }
  50.     } else {
  51.         echo "<option value=\"\"> <-- Seleccione un Item  </option>";
  52.     }
  53.  
  54.     mysql_free_result($consulta_hija);
  55.    
  56.     echo "</select>\n\n";
  57.     echo "<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
  58.     echo "</form>\n";
  59. }
  60. ?>
  #3 (permalink)  
Antiguo 28/09/2009, 18:55
Avatar de manumaf  
Fecha de Ingreso: mayo-2007
Ubicación: Argentina
Mensajes: 854
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Problema con listas dependientes.

Gracias por los respuesta pero los resultados son los mismos. No se que puede ser
  #4 (permalink)  
Antiguo 28/09/2009, 23:00
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 10 meses
Puntos: 13
Respuesta: Problema con listas dependientes.

estem creo que tal vez la cosa mejore asi pero no estoy seguro

Código PHP:
<?php
//conexión a mysql

if (!empty($_POST['enviado'])){

echo 
"Procesando formulario:<br>";
echo 
"Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";
echo 
"Recibido id_tabla_hija: ".$_POST['id_hija'];

} else {

   
$conexion mysql_connect($servidor$usuario$clave) or die(mysql_error());
   
mysql_select_db($basedatos$conexion) or die(mysql_error());

   
$id_padre=$_POST['id_padre'];
?>
  <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">

 <select name="id_padre" onChange="this.form.submit()">
  <option value=""> Seleccione un Item </option>
<?php
   $SQLconsulta_padre
="SELECT * FROM lenguajes";
   
$consulta_padre mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());

   while(
$registro_padre=mysql_fetch_assoc($consulta_padre)){
      if (
$id_padre == $registro_padre['id']){
        
?>
        <option value="<?php echo $registro_padre['id'?>" selected><?php echo $registro_padre['lenguaje']; ?></option>
        <?php
      
} else { ?>
<option value="<?php $registro_padre['id'];?>"><?php echo $registro_padre['lenguaje'];?></option>
    <?php
      
}
    } 
?>
   </select>
<?php
   mysql_free_result
($consulta_padre); 
 
?>
<select name="id_hija">
<?php
   
if (!empty($id_padre)){

       
$SQLconsulta_hija="SELECT * FROM categorias WHERE id_lenguaje ='$id_padre'";
       
$consulta_hija mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
 
       if (
mysql_num_rows($consulta_hija) != 0){
          while(
$registro_hija=mysql_fetch_assoc($consulta_hija)){
          
?>
<option value="<?php echo $registro_hija['id'];?>"><?php echo $registro_hija['categoria'];?></option>
<?php
          
}
        } else { 
?>
        
 <option value=""> No hay registros para este Item </option><?php
        
}
    } else {
    
?>
<option value=""> -- Seleccione un Item -- </option>
<?php
    
}

    
mysql_free_result($consulta_hija); 
  
?>  
  </select>
    <input type="submit" name="enviado" value="Enviar" />
    </form>
    <?php

?>
igualmente creo que habria que incorporar un sentencia del tipo:

if(trim($registro_padre['id'])==trim($registro_padre))

en vez de esto

if (mysql_num_rows($consulta_hija) != 0)


Nota : el uso de echo "<algo....." o sea echo html hace que tu codigo sea menos optimo
te lo digo yo que lo acabo de leer

me olvidaba encaja <br> donde necesites me olvide....
saludos!!

Última edición por zerpico_01; 28/09/2009 a las 23:06
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:05.