Ver Mensaje Individual
  #15 (permalink)  
Antiguo 28/01/2013, 09:55
art_rockerd
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 7 meses
Puntos: 6
Respuesta: Dos Combobox Dependientes de Uno

Cita:
Iniciado por fjrueda Ver Mensaje
art_rockerd.

Ya le han dado varios ejemplos que supongo ha implentado, y por tal motivo su codigo ya no sera el mismo desde su primer poste, y si si, usted ya dijo que funciona del alguna forma.

Yo le pido el favor que vuelva a postear su actual codigo pues asi se puede volver a estudiar y encontrar una respuesta positiva.

Que tenga buen dia.
Hola, ahora q ando algo liberada, les comparto mi solucion...
Aqui esta el HTML, el primero es el que cuando se eliga se deberan cambiar tanto el segundo como el tercero, pero como les comente no pude lograrlo, lo que hago es que al cargar el primero, destapo el segundo, y al seleccionar el segundo , destapo el tercero...
Código HTML:
Ver original
  1. <select name="tipo" id="tipo" onchange="mostrarM(this.value);">
  2.           <option value="000" selected="selected" name="seleccione">ESCOJA</option>
  3.           <option name="computo" value="C00">COMPUTO</option>
  4.           <option name="plasma" value="P00">PLASMA</option>
  5.         </select>
  6.  
  7. <select name="marca" id="marca" onchange="mostrarR(this.value);" >
  8.           <option value="0">---</option>
  9.         </select>
  10.  
  11. <select name="rango" id="rango" onchange="limpiar();">
  12.           <option value="0">---</option>
  13.         </select>

Este es el codigo JS. que recibe los datos y los manda a PHP para retornar los resultados e imprimirlos en la pantalla.
Código Javascript:
Ver original
  1. function mostrarM(tipo){
  2. $('#rango option[value="0"]').attr("selected", true);
  3. $('#financiamiento option[value="0"]').attr("selected", true);
  4. //en cada onchange, deshabilitar rango
  5. $('#rango').attr('disabled','disabled');
  6.         if(tipo=="000"){
  7.             $('#marca').attr('disabled','disabled');
  8.             $('#rango').attr('disabled','disabled');
  9.             return false;
  10.         }
  11.         $.post("carga_select2.php",{ id:tipo },
  12.         function(data){
  13.             $('#marca').attr('disabled','');
  14.             $('#marca').html(data);
  15.             //las volvemos a poner en el value '0'
  16.         })
  17. }
  18. function mostrarR(mark){
  19.         var id=$('#tipo option:selected').val();
  20.         //cuando la marca sea 1 (seleccione) deshabilitar rango
  21.         if(mark=="1"){
  22.             $('#rango').attr('disabled','disabled');
  23.             return false;
  24.         }
  25.         $.post("carga_select2.php",{ tipo:id },
  26.             function(data){
  27.             $('#rango').attr('disabled','');
  28.             $("#rango").html(data);
  29.             //alert(data);
  30.             //var selGarantia =$('#rango option:selected').val();
  31.             //alert(selGarantia);
  32.            
  33.         })
  34. }
  35.  
  36.  
  37. $(document).ready(function(){
  38.     $('#marca').attr('disabled','disabled');
  39.     $('#rango').attr('disabled','disabled');
  40. });

Este es el script PHP que recibe los datos de JS y busca en la BDD
(nota: desgraciadamente hice todo con la extension de Mysql de PHP y ahora que esta deprecada me esta costando mucho adaptarme a Mysqli pq no lo entiendo bien, si pudieran ayudarme a pasarlo a mysqli se los agradeceria mucho )

Código PHP:
Ver original
  1. <?php
  2. //funcion para cargar las marcas
  3.     function carga_combo($Area){
  4.             //realizamos la consulta
  5.             switch($Area){
  6.                 case '000':
  7.                     echo "<option value='0'><--SELECCIONE ANTES</option>";
  8.                     break;
  9.                 case 'C00':
  10.                     include "conexion.php";
  11.                         $query = "SELECT marca FROM marcas WHERE cod_prod='C00'";
  12.                         $ejecuta2 = mysql_query($query, $conexion) or die(mysql_error());
  13.                         $i="";
  14.                         while ($row= mysql_fetch_array($ejecuta2)) {
  15.                             $marca= $row['marca'];
  16.                             $i=$i+1;
  17.                             echo "<option value=".$i.">".$marca."</option>";
  18.                         }
  19.                        
  20.                     break;
  21.                 case 'P00':
  22.                     include "conexion.php";
  23.                     $query = "SELECT marca FROM marcas WHERE cod_prod='P00'";
  24.                     $ejecuta = mysql_query($query, $conexion) or die(mysql_error());
  25.                     $i="";
  26.                     while ($row= mysql_fetch_array($ejecuta)) {
  27.                         $marca= $row['marca'];
  28.                         $i=$i+1;
  29.                         echo "<option value=".$i.">".$marca."</option>";
  30.                     }
  31.                     break;
  32.             }//end switch  
  33. }//end function
  34.  
  35. //funcion para cargar marcas
  36. function carga_rangos($tipo){
  37.             //realizamos la consulta
  38.             switch($tipo){
  39.                 case '000':
  40.                     echo "<option value='0'><--SELECCIONE ANTES</option>";
  41.                     break;
  42.                 case 'C00':
  43.                     include "conexion.php";
  44.                         $query2 = "SELECT descripcion FROM rangos WHERE clave_rango LIKE '%c%' order by(clave_rango) desc";
  45.                         $ejecuta = mysql_query($query2, $conexion) or die(mysql_error());
  46.                         $i="";
  47.                         while ($row= mysql_fetch_array($ejecuta)) {
  48.                             $rangos= $row['descripcion'];
  49.                             $i=$i+1;
  50.                             echo "<option value=".$i."c>$".$rangos."</option>";
  51.                             }
  52.                     break;
  53.                 case 'P00':
  54.                     include "conexion.php";
  55.                         $query2 = "SELECT descripcion FROM rangos WHERE clave_rango LIKE '%p%' order by(clave_rango) desc";
  56.                         $ejecuta = mysql_query($query2, $conexion) or die(mysql_error());
  57.                         $i="";
  58.                         while ($row= mysql_fetch_array($ejecuta)) {
  59.                             $rangos= $row['descripcion'];
  60.                             $i=$i+1;
  61.                             echo "<option value=".$i."p>$".$rangos."</option>";
  62.                             }
  63.                     break;
  64.             }//end switch  
  65. }//end function
  66.  
  67.  
  68. if (isset($_POST['id'])){
  69.                     //lee las variables del $.post() de jQuery
  70.                     carga_combo($_POST['id']);
  71.                 }else {//en caso de no estar definida post(id) enviar parametro a la otra funcion para rangos
  72.                     if (isset($_POST['tipo'])){
  73.                         //lee las variables del $.post() de jQuery
  74.                         carga_rangos($_POST['tipo']);
  75.                     }
  76.                 }
  77. ?>

Y bueno al final les pongo como estan mis tablas en mi bdd Mysql
Código MySQL:
Ver original
  1. -- CREAMOS LA TABLA PARA LAS MARCAS --
  2. CREATE TABLE marcas(
  3. cod_prod varchar(10),
  4. marca varchar(40)
  5. );
  6.  -- INSERTAMOS EN TABLA MARCAS --
  7. ("C00","SELECCIONE.."),
  8. ("C00","ACER"),
  9. ("C00","APPLE"),
  10. ("C00","ASUS"),
  11. ("C00","BENQ"),
  12. ("C00","DELL"),
  13. ("C00","HP"),
  14. ("C00","LANIX"),
  15. ("C00","LENOVO"),
  16. ("C00","LG"),
  17. ("C00","MSI"),
  18. ("C00","PANASONIC"),
  19. ("C00","SAMSUNG"),
  20. ("C00","SONY"),
  21. ("C00","TOSHIBA"),
  22. ("P00","SELECCIONE.."),
  23. ("P00","LG"),
  24. ("P00","SAMSUNG"),
  25. ("P00","SONY"),
  26. ("P00","SHARP");
  27.  
  28.  
  29. -- TABLA RANGOS--
  30. CREATE TABLE rangos(
  31.     clave_rango varchar(5),
  32.     descripcion varchar(50),
  33.     CONSTRAINT PK primary key (clave_rango)
  34. );
  35.  
  36. -- INSERTAMOS CATALOGO DE RANGOS --
  37. INSERT INTO rangos(clave_rango,descripcion)  VALUES ("1c","0-7500"),
  38. ("2c","7501-10000"),
  39. ("3c",">10000"),
  40. ("1p","0-7500"),
  41. ("2p","7501-10000"),
  42. ("3p","10001-15000"),
  43. ("4p","15001-20000"),
  44. ("5p","20001-30000");

Quedo atenta a sus comentarios, estoy solo poniendo solo la parte donde cargo los selects de mi aplicacion, asi que si se me paso ponerles algo que uds. crean me avisan para que lo revise, muchas gracias por su apoyo.