Foros del Web » Programando para Internet » PHP »

Como llamar un valor directamente de la BD utilizando un combobox

Estas en el tema de Como llamar un valor directamente de la BD utilizando un combobox en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/02/2012, 12:44
 
Fecha de Ingreso: febrero-2012
Ubicación: Cancun
Mensajes: 79
Antigüedad: 12 años, 2 meses
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.
  #2 (permalink)  
Antiguo 27/02/2012, 14:22
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Como llamar un valor directamente de la BD utilizando un combobox

Te has explicado correctamente pero la solución no es única. Dices que no quieres dar a elegir la ciudad, pero hay una sólo ciudad por provincia en tu DB?. Si hay más de una ciudad, cuál vas a seleccionar? Puedes usar LIMIT 1 para seleccionar una sólo ciudad por provincia pero esto no te garantiza qué ciudad en concreto vas a elegir.
Parece que lo correcto es que tengas una tabla / array con la relación provincia / ciudad, el seleccionar la pronvicia, lees el valor de la ciudad directamente, dado que sólo hay una, no hay posibilidad de error. No sé si entendí bien la pregunta, saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 29/02/2012, 10:24
 
Fecha de Ingreso: febrero-2012
Ubicación: Cancun
Mensajes: 79
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como llamar un valor directamente de la BD utilizando un combobox

Muchísimas gracias por tu respuesta!

Si, solo existe una sola ciudad por provincia. Lo que no se , es como llamar a esa ciudad para que se muestre automáticamente en el casillero ciudad luego de elegir la provincia. Supongamos que elijo Córdoba, y en el casillero ciudad intento que aparezca automáticamente Villa Maria.

Desconozco como hacerlo, cualquier ayuda sera agradecida.

Muchas gracias de nuevo repara2!!!
  #4 (permalink)  
Antiguo 01/04/2012, 20:57
 
Fecha de Ingreso: abril-2012
Mensajes: 1
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Como llamar un valor directamente de la BD utilizando un combobox

lo que tu deseas es que la tercera respuesta no aparesca en un select, sino que paresca como un input, oseas en texto.

Yo tengo el mismo problema, solo que yo nesecito que la tercera consulta (la ciudad), me de como resultado la ciudad y otro dato como "el numero de habitantes".

ya carge mi base de datos y la conculta pero alli nomas me quede. Gracias si alguien pudiera ayudarme.

Etiquetas: combobox, php+bd+mysql, select-multiples
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 16:47.