Foros del Web » Programando para Internet » Javascript »

No puedo mostrar 2 desplegables

Estas en el tema de No puedo mostrar 2 desplegables en el foro de Javascript en Foros del Web. Hola buenas! Aquí estoy dando la lata otra vez... Tengo un problema en una página. En ella tengo que seleccionar una empresa, y una planta ...
  #1 (permalink)  
Antiguo 08/03/2013, 10:48
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
No puedo mostrar 2 desplegables

Hola buenas! Aquí estoy dando la lata otra vez... Tengo un problema en una página. En ella tengo que seleccionar una empresa, y una planta de distribución y lo que quiero es que al seleccionar una empresa, justo debajo donde selecciono la planta me salgan solo las plantas de ESA empresa, no de las demás. Es decir, que la empresa actue de "filtro" para las plantas.

Aquí os paso el código donde muestro las empresas, y lo que he hecho para mostrar plantas:

Código PHP:
Ver original
  1. if($_SESSION['rol']=="Administrador"){
  2.             $logoDescripcion = "SELECT * FROM empresa";
  3.             $resultLD = mysql_query($logoDescripcion,$conexio);
  4.             $count=0;
  5.             while($rowLD= mysql_fetch_array($resultLD)){
  6.                 ?>
  7.                 <div id="empresa<?php echo $rowLD['idempresa'];?>" style="width:700px; <?php if($count!=0){echo "display:none;";}?>">
  8.                 <?php if($rowLD['logo']!=''){ ?>
  9.                     <img src="logos/<?php echo $rowLD['idempresa'].$rowLD['logo']; ?>" width="100" height="100" />
  10.                 <? } else { ?>
  11.                     <img src="logos/nologo.jpg" width="100" height="100" />
  12.                 <?php } ?>
  13.                     <h1><?php echo $rowLD['nombre']; ?></h1>
  14.                 <?php if($rowLD['descripcion']!=''){ ?>
  15.                     <?php echo $rowLD['descripcion'];?>
  16.                 <? } else { ?>
  17.                     <?php echo "Empresa sin descripcion"?>
  18.                 <?php } ?>
  19.                 </div>
  20.             <?php
  21.             $count++;
  22.             }
  23.             ?>
  24.             <p>
  25.             Seleccionar empresa
  26.             <?php
  27.             $consultaEmp = "SELECT * FROM empresa";
  28.             $resultEmp = mysql_query($consultaEmp,$conexio);
  29.             ?>
  30.             <select id="idempresa" name="idempresa" onChange="cambiarEmpresa(this.value)">
  31.             <?php
  32.             while($rowEmp= mysql_fetch_array($resultEmp)){
  33.             ?>
  34.                 <option value="<?php echo $rowEmp['idempresa']?>"><?php echo $rowEmp['nombre']?></option>
  35.             <?php
  36.             }
  37.             ?>
  38.             </select>
  39.             </p>
  40.             <p>
  41.             Seleccionar planta
  42.             <?php
  43.             $consultaPlanta = "SELECT * FROM planta WHERE idempresa=".$rowEmp['idempresa'];
  44.             $resultPlanta = mysql_query($consultaPlanta,$conexio);
  45.             ?>
  46.             <select id="idplanta" name="idplanta" onChange="cambiarPlanta(this.value)">
  47.             <?php
  48.             while($rowPlanta=mysql_fetch_array($resultPlanta)){
  49.             ?>
  50.                  <option value="<?php echo $rowPlanta['idplanta']?>"><?php echo $rowPlanta['nombre']?></option>
  51.             <?php
  52.             }
  53.             ?>
  54.             </select>
  55.             </p>
  56.             </div>
  57.             <?php

PD: El segundo desplegable (el de seleccionar planta) se muestra, pero no hay nada.
Gracias por la ayuda que dais, sois una buena comunidad :)
  #2 (permalink)  
Antiguo 08/03/2013, 10:59
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: No puedo mostrar 2 desplegables

El valor de $rowEmp['idempresa'] es valido hasta el while anterior, en todo caso tomará el último valor que se asignó: $rowEmp= mysql_fetch_array($resultEmp)
  #3 (permalink)  
Antiguo 08/03/2013, 11:08
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 5 meses
Puntos: 4
Respuesta: No puedo mostrar 2 desplegables

Hola, en PHP el código se ejecuta del lado del servidor al cargar la página, es por eso que al seleccionar una empresa el siguiente select no lleva ningún valor, porque necesitas recargar la página enviando el idEmpresa por POST O GET

Saludos
  #4 (permalink)  
Antiguo 11/03/2013, 08:53
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: No puedo mostrar 2 desplegables

Gracias, pero cómo lo haría para que en el segundo select sólo me dejara seleccionar las Plantas que coincidan con IdEmpresa?

Tengo esto tambien (son las funciones de dentro de los Select "onChange"):
Código PHP:
Ver original
  1. function cambiarEmpresa(idempresa){
  2.     document.getElementById("empresa"+oldId).style.display='none';
  3.     document.getElementById("empresa"+idempresa).style.display='inline';
  4.     oldId=idempresa;
  5. }
  6.  
  7. function cambiarPlanta(idplanta){
  8.     document.getElementById("planta"+oldId).style.display='none';
  9.     document.getElementById("empresa"+idempresa).style.display='inline';
  10.     oldId=idpplanta;
  11. }

No sé cómo podría pasarle por Post el valor de "idempresa" para filtrar en MySQL las Plantas posibles...

Última edición por Dylanrv; 11/03/2013 a las 09:18
  #5 (permalink)  
Antiguo 13/03/2013, 10:00
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: No puedo mostrar 2 desplegables

Refloto porque aún tengo la duda, no he sido capaz de pasarle por $_POST o $_GET el valor de planta para filtrar el segundo select. Agradecería más ayuda, gracias :)
  #6 (permalink)  
Antiguo 18/03/2013, 08:37
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: No puedo mostrar 2 desplegables

Hola, todavía necesito ayuda. He estado mirando los FAQs y no logro encontrar un caso como el mío, donde los valores dependen de la BDD. Agradecería me pudierais ayudar siendo más explícitos con las soluciones, gracias!
  #7 (permalink)  
Antiguo 18/03/2013, 10:41
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Respuesta: No puedo mostrar 2 desplegables

Lo que necesitas es el archiusado ejemplo de combos dependientes con ajax, no se si utilizarás algún framework o algo, pero en base a tu gusto puedes buscar ejemplos de como hacer combos dependientes con ajax o el framework que te agrade.

Saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #8 (permalink)  
Antiguo 18/03/2013, 11:15
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: No puedo mostrar 2 desplegables

Hola, gracias por contestar! La idea sería no usar Ajax ni nada por el estilo. He pensado que si creaba un formulario y me mandara los datos por $_POST podría recibir el idempresa y así filtrar el segundo SELECT. Lo he intentado hacer así:
Código PHP:
Ver original
  1. Ver datos de la empresa
  2.             <?php
  3.             $consultaEmp ="SELECT * FROM empresa";
  4.             $resultEmp = mysql_query($consultaEmp,$conexio);
  5.             ?>
  6.             <form action=""; method="post">
  7.             <select id="idempresa" name="idempresa" onChange="cambiarEmpresa(this.value); this.form.submit()">
  8.             <?php
  9.             while($rowEmp=mysql_fetch_array($resultEmp)){
  10.             ?>
  11.                 <option value="<?php echo $rowEmp['idempresa']?>"><?php echo $rowEmp['nombre']?></option>
  12.             <?php
  13.             }
  14.             ?>
  15.             </select>
  16.             </form>
  17.             </p>
  18.             <p>
  19.            
  20.             <?php echo $_POST['idempresa'] ?>   Seleccionar planta
  21.             <?php
  22.             $idempresa=$_POST['idempresa'];
  23.             $consultaPlanta = "SELECT * FROM planta WHERE idempresa='.$idempresa'";
  24.             $resultPlanta = mysql_query($consultaPlanta,$conexio);
  25.             ?>
  26.             <select id="idplanta" name="idplanta">
  27.             <?php
  28.             while($rowPlanta=mysql_fetch_array($resultPlanta)){
  29.             ?>
  30.                  <option value="<?php echo $rowPlanta['idplanta']?>"><?php echo $rowPlanta['nombre']?></option>
  31.             <?php
  32.             }
  33.             ?>
  34.             </select>
  35.             </p>
  36.             <?php
  #9 (permalink)  
Antiguo 18/03/2013, 12:01
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Respuesta: No puedo mostrar 2 desplegables

si no quieres usar AJAX entonces no entiendo porque posteas ese problema en este foro, pero en fin, tampoco discutire de ello ahora. Con respecto a tu problema, lo que puedes hacer es eviar el formulario a si mismo (a la misma página php) y si dentro de los post el correspondiente a empresa es distinto de vacio ($_POST['empresa'] != '') le pones cargar el segundo combobox. luego cuando envies el formulario completo, tendrás que hacer las validaciones para que se ejecute lo que quieras hacer con el form y no la actualización de combos (por ejemplo que todos los campos sean != ''), en el fondo luego tienes que pensar una forma de diferenciar entre un "falso envío" (el que se hace para actualizar el combo) y un "envío verdadero" ( el que se hace una vez se llena el formulario")

Espero se entienda la idea.

Saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #10 (permalink)  
Antiguo 19/03/2013, 08:39
 
Fecha de Ingreso: marzo-2013
Mensajes: 23
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: No puedo mostrar 2 desplegables

Vale gracias! Lo de no usar AJAX... posteé esto en PHP y me lo movieron a JavaScript así que creo que en un principio lo posteé bien... de todas formas, siento si te he molestado.

Etiquetas: desplegables, mysql, php, select, sql
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 06:57.