Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2012, 11:13
Avatar de a_gomez
a_gomez
 
Fecha de Ingreso: marzo-2012
Ubicación: /var/www/
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 2
Pregunta combox dependientes php mysql jquery

hola amigos como estan el problema uqe tengo es el siguiente tengo una seri de combox o selects dependientes y e intentado controlarlos por medio de jquery basandome en un codigo que encontre en esta pagina http://jjeb.wordpress.com/.

He modificado la base de datos y acoplado el codigo a mi necesidad pero no me funciona. :(

el orden de mi comobox es ciudad -> comuna -> barrio

me sale la lista de ciudad ha la hora de seleccionar comuna no me carga las comunas.
esta es mi pagina com_dependientes.php
Código PHP:
Ver original
  1. <html>
  2.  <head>
  3.  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4.  <title></title>
  5.  </head>
  6. <?
  7.  include("mysql_inc.php");
  8.  $mysql = new MySql_Class;
  9.  $mysql->user="root";
  10.  $mysql->password="toor";
  11.  $mysql->db="combox";
  12.  $mysql->server="localhost";
  13.  $mysql->conection();
  14.  ?>
  15.  
  16.  <script src="js/jquery.js"></script>
  17.  <script>
  18.  $(document).ready(function(){
  19.  $("select").change(function(){
  20.  // Vector para saber cuál es el siguiente combo a llenar
  21.  var combos = new Array();
  22.  combos['ciudad'] = "comuna";
  23.  combos['comuna'] = "barrio";
  24.  // Tomo el nombre del combo al que se le a dado el clic por ejemplo: ciudad
  25.  posicion = $(this).attr("name");
  26.  // Tomo el valor de la opción seleccionada
  27.  valor = $(this).val()
  28.  // Evaluó  que si es ciudad y el valor es 0, vacié los combos de comuna y barrio
  29.  if(posicion == 'ciudad' && valor==0){
  30.  $("#comuna").html('    <option value="0" selected="selected">---- SELECCIONE LA COMUNA ----</option>')
  31.  $("#barrio").html('    <option value="0" selected="selected">----- SELECCIONE LA BARRIO -----</option>')
  32.  }else{
  33.  /* En caso contrario agregado el letreo de cargando a el combo siguiente
  34.  Ejemplo: Si seleccione ciudad voy a tener que el siguiente según mi vector combos es: comuna  por qué  combos [ciudad] = comuna
  35.  */
  36.  $("#"+combos[posicion]).html('<option selected="selected" value="0">Cargando...</option>')
  37.  /* Verificamos si el valor seleccionado es diferente de 0 y si el combo es diferente de barrio, esto porque no tendría caso hacer la consulta a barrio porque no existe un combo dependiente de este */
  38.  if(valor!="0" || posicion !='barrio'){
  39.  // Llamamos a pagina de combos.php donde ejecuto las consultas para llenar los combos
  40.  $.post("combos.php",{
  41.  combo:$(this).attr("name"), // Nombre del combo
  42.  id:$(this).val() // Valor seleccionado
  43.  },function(data){
  44.  $("#"+combos[posicion]).html(data);    //Tomo el resultado de pagina e inserto los datos en el combo indicado
  45.  })
  46.  }
  47.  }
  48.  })
  49.  })
  50.  </script>
  51.  <body>
  52.  <form id="form1" name="form1">
  53.  <div>
  54.  <select name="ciudad" id="ciudad">
  55.  <option selected="selected" value="0">----- SELECCIONE LA CIUDAD -----</option>
  56.  <?php
  57.  
  58.  $rs = mysql_query("SELECT * FROM ciudad order by ciudad");
  59.             for($k=0;$k < mysql_num_rows($rs); $k++){
  60.                 $fila = mysql_fetch_assoc($rs);
  61.                 echo '<option value="'.$fila["idciudad"].'">'.htmlentities($fila["ciudad"]).'</option>';
  62.             }
  63.  ?>
  64.  
  65.  
  66.  </select>
  67.  
  68.  <select id="comuna" name="comuna">
  69.  <option value="0" selected="selected">---- SELECCIONE LA COMUNA ----</option>
  70.  </select>
  71.  
  72.  <select id="barrio" name="barrio">
  73.  <option value="0" selected="selected">----- SELECCIONE LA BARRIO -----</option>
  74.  </select>
  75.  
  76.  </form>
  77.  </body>
  78.  </html>
y esta es la pagina combos.php

Código PHP:
Ver original
  1. <?
  2.  
  3.  include("mysql_inc.php");
  4.  $mysql = new MySql_Class;
  5.  $mysql->user="root";
  6.  $mysql->password="toor";
  7.  $mysql->db="combox";
  8.  $mysql->server="localhost";
  9.  $mysql->conection();
  10.  
  11.  
  12.  $idcombo = $_POST["id"];
  13.  $action =$_POST["combo"];
  14.  
  15.  switch($action){
  16.  case "ciudad":{
  17.  
  18.   $rs = mysql_query("SELECT idcomuna,comuna FROM comuna WHERE ciudad = $idcombo order by comuna ASC");
  19.             for($k=0;$k < mysql_num_rows($rs); $k++){
  20.                 $fila = mysql_fetch_assoc($rs);
  21.                 echo '<option value="'.$fila["idcomuna"].'">'.htmlentities($fila["comuna"]).'</option>';
  22.             }
  23.  break;
  24.  }
  25.  case "comuna":{
  26.  
  27.   $rs = mysql_query("SELECT idbarrio,barrio FROM barrio WHERE comuna= $idcombo order by barrio ASC");
  28.             for($k=0;$k < mysql_num_rows($rs); $k++){
  29.                 $fila = mysql_fetch_assoc($rs);
  30.                  echo '<option value="'.$rs["idbarrio"].'">'.htmlentities($rs["barrio"]).'</option>';
  31.             }
  32.  break;
  33.  }
  34.  }
  35.  ?>

gracias por su colaboracion y cualquier comentario es de ayuda.