Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/02/2012, 06:37
Avatar de jesus1975
jesus1975
 
Fecha de Ingreso: febrero-2012
Ubicación: Valencia
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 3
Problema select 3 niveles

Buenas, otra vez por aqui...

Tengo un problemon con unos select de tres niveles... todo funciona perfectamente excepto un pequeño detalle pero muy importante, a ver como puedo explicar esto sin liarlo demasiado.

Tres select
Marcas
Modelos
Versiones

Primer select (seleccionas la marca)

Segundo select, te muestra los modelos que corresponden a la marca seleccionada. (seleccionas el modelo)

Aqui esta el problema
Tercer select, te muestra las versiones del modelo seleccionado pero tambien muestra los modelos que no corresponden a la marca selecciona en el primer select.

Dejo el php que creo que es donde esta el error...
Código PHP:
Ver original
  1. $listadoSelects=array(
  2. "Marcas"=>"marcas",
  3. "Modelos"=>"modelos",
  4. "Versiones"=>"versiones"
  5. );
  6.  
  7. function validaSelect($selectDestino)
  8. {
  9.     // Se valida que el select enviado via GET exista
  10.     global $listadoSelects;
  11.     if(isset($listadoSelects[$selectDestino])) return true;
  12.     else return false;
  13. }
  14.  
  15. function validaOpcion($opcionSeleccionada)
  16. {
  17.     // Se valida que la opcion seleccionada por el usuario en el select tenga un valor numerico
  18.     if(is_numeric($opcionSeleccionada)) return true;
  19.     else return true;
  20. }
  21.  
  22. $selectDestino=$_GET["select"];
  23. $opcionSeleccionada=$_GET["opcion"];
  24. if(validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
  25. {
  26.    
  27.         $tabla=$listadoSelects[$selectDestino];
  28.         if($tabla=='modelos'){
  29.                 $consulta=mysql_query("SELECT modelo, descripcion FROM $tabla WHERE marca='$opcionSeleccionada' ORDER BY descripcion ASC") or die(mysql_error());      
  30.                 // Comienzo a imprimir el select
  31.                 echo "<select name='".$selectDestino."' id='".$selectDestino."' class='selectForm' onChange='cargaContenido(this.id)'>";
  32.                 echo "<option value='0'>Selecciona una opcion</option>";
  33.                 while($registro=mysql_fetch_row($consulta))
  34.                 {
  35.                     // Convierto los caracteres conflictivos a sus entidades HTML correspondientes para su correcta visualizacion
  36.                     $registro[1]=htmlentities($registro[1]);
  37.                     // Imprimo las opciones del select
  38.                     echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
  39.                 }          
  40.                 echo "</select>";          
  41.         } elseif ($tabla=='versiones'){
  42.             $consulta=mysql_query("SELECT version, nombre FROM $tabla WHERE modelo='$opcionSeleccionada' ORDER BY nombre ASC") or die(mysql_error());
  43.             // Comienzo a imprimir el select
  44.             echo "<select name='".$selectDestino."' id='".$selectDestino."' class='selectForm' onChange='cargaContenido(this.id)'>";
  45.             echo "<option value='0'>Selecciona una opcion</option>";
  46.             while($registro=mysql_fetch_row($consulta))
  47.             {
  48.                 // Convierto los caracteres conflictivos a sus entidades HTML correspondientes para su correcta visualizacion
  49.                 $registro[1]=htmlentities($registro[1]);
  50.                 // Imprimo las opciones del select
  51.                 echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
  52.             }          
  53.             echo "</select>";
  54.         }  
  55. }
  56. ?>