Foros del Web » Programando para Internet » PHP »

Usando Selects Anidados

Estas en el tema de Usando Selects Anidados en el foro de PHP en Foros del Web. Buenos dias a tod@s, tengo una web en php casi motnada entera, ahora estoy con el control de errores, les pongo el codigo y les ...
  #1 (permalink)  
Antiguo 14/09/2010, 01:24
 
Fecha de Ingreso: septiembre-2010
Mensajes: 6
Antigüedad: 13 años, 7 meses
Puntos: 0
Usando Selects Anidados

Buenos dias a tod@s, tengo una web en php casi motnada entera, ahora estoy con el control de errores, les pongo el codigo y les comento, la base del codigo es de su web, pero "mejorado" o eso he intentado ,hehe, pongo la parte importante
Código PHP:
// Inicio Formulario .. PHP_SELF enviamos a sí 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 una plataforma </option>\n";
   
   
$SQLconsulta_padre="SELECT * FROM version_plataforma";
   
$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_version_plataforma'])
      {
         echo 
"<option value=\"".$registro_padre['id_version_plataforma']."\" selected>".$registro_padre['ver_pla']."</option>\n";
      } 
      else 
      {
         echo 
"<option value=\"".$registro_padre['id_version_plataforma']."\">".$registro_padre['ver_pla']."</option>\n";
      }
    }
   echo 
"</select>\n\n";
 
   
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.
      
    // Formar Select "Hijo"

    
echo "<select name=\"id_hija\" onChange=\"this.form.submit()\">\n";

   
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opción del select hijo
   // se muestra el mensaje de "seleccine un item" (del select padre).
   
if (!empty($id_padre))
   {
    echo 
$id_hija;
       
$SQLconsulta_hija="SELECT * FROM usuarios WHERE id_version_plataforma ='$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) )
          {
// 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_hija == $registro_hija['id_usuarios'])
            {
                echo 
"<option value=\"".$registro_hija['id_usuarios']."\" selected>".$registro_hija['Nombre']."</option>\n";
            } 
            else 
            {
                echo 
"<option value=\"".$registro_hija['id_usuarios']."\">".$registro_hija['Nombre']."</option>\n";
            }
            
            
          }
        } 
        elseif(
mysql_num_rows($consulta_hija) == 1)
        {
            echo 
"<option value='0'> <-- Seleccione un Usuario  </option>";
            echo 
"<option value=\"".$registro_hija['id_usuarios']."\" selected>".$registro_hija['Nombre']."</option>\n";
        }
        else 
        {
            echo 
"<option value='0'> No hay registros para este Item </option>";
        }
    } 
    else 
    {
        echo 
"<option value='0'> <-- Seleccione un Usuario  </option>";
    }
 
    
mysql_free_result($consulta_hija); // Liberar memoria usada por consulta. 
Este codigo tiene 2 desplegables, uno que seria un numero de plataforma (padre) y al seleccionar un dato muestra los usuarios(hijos) de esa plataforma, he detectado los siguientes fallos a ver si pueden ayudarme...

Si selecciono una plataforma, luego un usuario y luego cambio la plataforma y envio el formulario, me envia la paltaforma correcta, pero el usuario que seleccione anteriormente
Otro fallo es cuando en la lista de usuarios solamente hay 1 usuario, no lo puedo seleccionar.
Supongo que loos errores del hijo son provocados porque el que actualiza la pagina es el padre, alguna idea para subsanar esto?

Muchisimas gracias por su tiempo
  #2 (permalink)  
Antiguo 14/09/2010, 08:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde Configuración PHP a PHP

Etiquetas: anidados, selects
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 03:10.