Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/02/2012, 12:44
agustinpak
 
Fecha de Ingreso: febrero-2012
Ubicación: Cancun
Mensajes: 79
Antigüedad: 13 años
Puntos: 0
Como llamar un valor directamente de la BD utilizando un combobox

Hola, saludos a todos.

Intento ser breve a mi consulta, tengo 3 combobox dependientes.
El clasico Pais, Provincia y Ciudad. Hasta ahi todo bien.

Lo que no resulta es el intento de que en el tercer combo (ciudad) este me arroje directamente la ciudad sin darme las opciones de elegir cual deseo, ya que solo quiero una ciudad por provincia y que esta se muestre directamente en el tercer combo (ciudad) al elegir una opcion del segundo combo (provincia).

En la BD contengo 3 tablas ( Pais, Provincia, Ciudad)

Aqui el index:


Código HTML:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3. <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
  4. <script type="text/javascript">
  5. $(document).ready(function(){
  6.     cargar_paises();
  7.     $("#pais").change(function(){dependencia_estado();});
  8.     $("#estado").change(function(){dependencia_ciudad();});
  9.     $("#estado").attr("disabled",true);
  10.     $("#ciudad").attr("disabled",true);
  11. });
  12.  
  13. function cargar_paises()
  14. {
  15.     $.get("scripts/cargar-paises.php", function(resultado){
  16.         if(resultado == false)
  17.         {
  18.             alert("Error");
  19.         }
  20.         else
  21.         {
  22.             $('#pais').append(resultado);          
  23.         }
  24.     });
  25. }
  26. function dependencia_estado()
  27. {
  28.     var code = $("#pais").val();
  29.     $.get("scripts/dependencia-estado.php", { code: code },
  30.         function(resultado)
  31.         {
  32.             if(resultado == false)
  33.             {
  34.                 alert("Error");
  35.             }
  36.             else
  37.             {
  38.                 $("#estado").attr("disabled",false);
  39.                 document.getElementById("estado").options.length=1;
  40.                 $('#estado').append(resultado);        
  41.             }
  42.         }
  43.  
  44.     );
  45. }
  46.  
  47. function dependencia_ciudad()
  48. {
  49.     var code = $("#estado").val();
  50.     $.get("scripts/dependencia-ciudades.php?", { code: code }, function(resultado){
  51.         if(resultado == false)
  52.         {
  53.             alert("Error");
  54.         }
  55.         else
  56.         {
  57.             $("#ciudad").attr("disabled",false);
  58.             document.getElementById("ciudad").options.length=1;
  59.             $('#ciudad').append(resultado);        
  60.         }
  61.     });
  62.    
  63. }
  64. <style type="text/css">
  65. dt{font-size:200%;}
  66. dd{font-size:150%;}
  67. <title>Combobox dependientes de Pa&iacute;s, Estado y Ciudad con PHP, MySQL, jQuery y un poco de AJAX</title>
  68. </head>
  69.  
  70. <h1>&nbsp;</h1>
  71. <dl>
  72. <dt>&nbsp;</dt>
  73.   <dd>Vehiculo:</dd>
  74. <dd>
  75.         <select id="pais" name="pais">
  76.             <option value="0">Selecciona Uno...</option>
  77.         </select>
  78.     </dd>
  79.  
  80.     <dd>Servicio:</dd>
  81.     <dd>
  82.         <select id="estado" name="estado">
  83.             <option value="0">Selecciona Uno...</option>
  84.         </select>
  85.     </dd>
  86.  
  87.     <dd>Precio:</dd>
  88.     <dd>
  89.         <select id="ciudad" name="ciudad">
  90.             <option value="0">Selecciona Uno...</option>
  91.         </select>
  92.     </dd>
  93. </dl>
  94. </body>
  95. </html>



Consulta Ciudad:


Código PHP:
Ver original
  1. <?php
  2. include("clases/class.mysql.php");
  3. include("clases/class.combos.php");
  4. $ciudades = new selects();
  5. $ciudades->code = $_GET["code"];
  6. $ciudades = $ciudades->cargarCiudades();
  7. foreach($ciudades as $key=>$value)
  8. {
  9.         echo "<option value=\"$key\">$value</option>";
  10. }
  11. ?>


Consulta BD:


Código PHP:
Ver original
  1. <?php
  2.  
  3. class selects extends MySQL
  4. {
  5.     var $code = "";
  6.    
  7.     function cargarPaises()
  8.     {
  9.         $consulta = parent::consulta("SELECT Name,Code FROM country ORDER BY Name ASC");
  10.         $num_total_registros = parent::num_rows($consulta);
  11.         if($num_total_registros>0)
  12.         {
  13.             $paises = array();
  14.             while($pais = parent::fetch_assoc($consulta))
  15.             {
  16.                 $code = $pais["Code"];
  17.                 $name = $pais["Name"];             
  18.                 $paises[$code]=$name;
  19.             }
  20.             return $paises;
  21.         }
  22.         else
  23.         {
  24.             return false;
  25.         }
  26.     }
  27.     function cargarEstados()
  28.     {
  29.         $consulta = parent::consulta("SELECT Name FROM province WHERE Country = '".$this->code."'");
  30.         $num_total_registros = parent::num_rows($consulta);
  31.         if($num_total_registros>0)
  32.         {
  33.             $estados = array();
  34.             while($estado = parent::fetch_assoc($consulta))
  35.             {
  36.                 $name = $estado["Name"];               
  37.                 $estados[$name]=$name;
  38.             }
  39.             return $estados;
  40.         }
  41.         else
  42.         {
  43.             return false;
  44.         }
  45.     }
  46.        
  47.     function cargarCiudades()
  48.     {
  49.         $consulta = parent::consulta("SELECT Name FROM city WHERE Province = '".$this->code."'");
  50.         $num_total_registros = parent::num_rows($consulta);
  51.         if($num_total_registros>0)
  52.         {
  53.             $ciudades = array();
  54.             while($ciudad = parent::fetch_assoc($consulta))
  55.             {
  56.                 $name = $ciudad["Name"];               
  57.                 $ciudades[$name]=$name;
  58.             }
  59.             return $ciudades;
  60.         }
  61.         else
  62.         {
  63.             return false;
  64.         }
  65.     }      
  66. }
  67. ?>

Entonces aqui en la ultima consulta a ciudad, deberia de llamar a este combo, directamente la ciudad y no brindar la opcion de seleccionarla.

Espero haber explicado todo correctamente. Cabe aclarar que mis conocimientos son de principiante. Y estare agradecido de cualquier ayuda.

Muchas gracias.