elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  AYUDA!! Combobox anidados
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AYUDA!! Combobox anidados  (Leído 5,587 veces)
aldg

Desconectado Desconectado

Mensajes: 79



Ver Perfil
AYUDA!! Combobox anidados
« en: 28 Abril 2013, 16:28 pm »

Estoy intentado crear dos combobox anidados. Típico provincia, ciudad, pero no hay manera con php.

La estructura de la BD
provincia (id, nombre)
ciudad (id, id_provincia, nombre)

La cosa es que quiero que al marcar una provincia me cargue las ciudades de esa provincia sin cargar la pagina de nuevo, he visto por ahi algo de javascript y ajax, pero para hacer la consulta de mysql dentro me pierdo.

Me pueden ayudar???


En línea

Intel Quad Core Q9550 2.83 GHZ
4 GB RAM DDR2 800
Asus Nvidia 9500 GT 1GB DDR2
Asus P5N-MX
EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: AYUDA!! Combobox anidados
« Respuesta #1 en: 28 Abril 2013, 17:11 pm »

Lo podes buscar como chained combobox, la consulta a la db se utiliza php, js obtiene los datos pasados a json con la funcion json_decode y mostras los parametros con js.
No es necesario hacer una consulta a la db si no es necesario, mira este plugin para jquery, podes generar la estructura html con php, bueno seria solo 1 consulta a la db para obtener las ciudades y provincias a mostrar.

http://www.appelsiini.net/2010/jquery-chained-selects
http://www.appelsiini.net/projects/chained/demo.html



« Última modificación: 28 Abril 2013, 17:13 pm por EFEX » En línea

aldg

Desconectado Desconectado

Mensajes: 79



Ver Perfil
Re: AYUDA!! Combobox anidados
« Respuesta #2 en: 28 Abril 2013, 19:30 pm »

No entiendo como funciona el plugin!

Yo de javascript se muy poco y de jquery nada. Siempre he trabajado con php...
En línea

Intel Quad Core Q9550 2.83 GHZ
4 GB RAM DDR2 800
Asus Nvidia 9500 GT 1GB DDR2
Asus P5N-MX
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: AYUDA!! Combobox anidados
« Respuesta #3 en: 29 Abril 2013, 00:41 am »

Citar
Yo de javascript se muy poco y de jquery nada. Siempre he trabajado con php...

Pos tendrás que aprender xD Al menos lo básico.. porque lo que pides (sin recargar la pagina) es imposible solo con PHP. No hace falta que hagas una consulta mysql desde javascript (aparte que es imposible xD). Lo que tienes que hacer es una comunicación entre javascript/ajax y php.


Supongamos que tenemos este php.
Código
  1. <?php
  2. // Conexion a bd.
  3. $mysql = mysqli_connect('localhost','root','toor','test');
  4. // Si nos envían provincia...
  5. if(!empty($_GET['provincia'])){
  6.   // Convertimos a integro.. (por si acaso)
  7.   $provincia = (int)$_GET['provincia'];
  8.   // Armamos consulta
  9.   $query = 'SELECT id,id_provincia,nombre FROM cuidades WHERE id_provincia="'.$provincia.'"';
  10.   // Si no nos envia nada, devolvemos provincias.
  11. } else { $query = 'SELECT id,nombre FROM provincias'; }
  12.  
  13. $result = mysqli_query($mysql,$query);
  14. if(!$result){die(mysqli_error());}
  15.  
  16. $res = array(); // strict
  17. while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
  18.   // Guaramos el resultado en un array.
  19.   $res[] = array($row['id'],$row['nombre']);
  20. }
  21. mysqli_close($mysql);
  22. // Lo convertimos a JSON y morrimos xD
  23. ?>

Es relativamente sencillo.
Código
  1. // Si le hago una consulta directa devuelve provincias en JSON
  2. // http://localhost/consulta.php
  3. // [["1","Palencia"],["2","Burgos"],["3","Madrid"]]
  4.  
  5. // Si le hago una consulta, indicando una id de provincia.. devuelve cuidades de dicha.
  6. // http://localhost/consulta.php?provincia=3
  7. // [["5","Madrid"],["6","Mostoles"]]
  8.  
  9. // Si, soy malo en geografía xD

Ahora toca javascript. Supongamos que tenemos un simple html como este:
Código
  1.   <form action="#" method="GET">
  2.      <select id="provincias" size="10" style="width:200px;"></select>
  3.      <select id="cuidades" size="10" style="width:200px;"></select>
  4.      <br />
  5.      <input type="button" id="recargar" value="(Re)Cargar" />
  6.   </form>
  7. </body>

Vamos a añadirle la librería de jquery (para minimizar el codigo)..
Código
  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  2. <script type="text/javascript">
  3.   // Cuando el documento este listo...
  4.   $(function() {
  5.      // Aqui meteremos el resto del code...
  6.   });
  7. </script>

Ahora vamos a hacer que cuando el usuario pulse el boton (Re)Cargar, se carguen las provincias.
Código
  1. $('body').on('click','#recargar',function(){
  2.   // Hacemos una consulta GET (ajax) hacia el fichero php...
  3.   $.get('http://localhost/consulta.php',function(data){
  4.      // Si la consulta devuelve algun resultado.. eliminamos los options previos.
  5.      $('#provincias option, #cuidades option').remove();
  6.      // Y llenamos el select de provincias con el resultado devuelto.
  7.      var result = $.parseJSON(data); // Convertimos el json a array.
  8.      // Por cada item en el array..
  9.      for(i=0;i<result.length;i++){
  10.         // Lo "añadimos" al select de provincias en forma de option, guardando el id como value.
  11.         $('#provincias').append('<option value="'+result[i][0]+'">'+result[i][1]+'</option>');
  12.      }
  13.   });
  14. });

Y ahora toca para cuando el usuario hace click sobre una provincia..
Código
  1. $('#provincias').on('click','option',function(){
  2.   // Obtenemos el value del option:
  3.   var valor = $(this).attr('value');
  4.   // Hacemos la consulta GET con el id.
  5.   $.get('http://localhost/server/ehn/cuidades/consulta.php?provincia='+valor,function(data){
  6.      // Si la consulta devuelve algun resultado.. eliminamos los options de cuidades previas.
  7.      $('#cuidades option').remove();
  8.      // Convertimos el json a array.
  9.      var result = $.parseJSON(data);
  10.      for(i=0;i<result.length;i++){
  11.         // Lo "añadimos" al select de cuidades en forma de option, guardando el id como value.
  12.         $('#cuidades').append('<option value="'+result[i][0]+'">'+result[i][1]+'</option>');
  13.      }
  14.   });
  15. });

Listo xD

Unos links (ingles):
jQuery -> http://jquery.com/
jQuery selectors ->  http://api.jquery.com/category/selectors/
jQuery GET -> http://api.jquery.com/jQuery.get/
jQuery ParseJson -> http://api.jquery.com/jQuery.parseJSON/
jQuery append -> http://api.jquery.com/append/

Videotutorial de jQuery -> https://tutsplus.com/course/30-days-to-learn-jquery/
Tutorial de javascript -> http://www.w3schools.com/js/

Saludos
« Última modificación: 29 Abril 2013, 00:43 am por drvy | BSM » En línea

EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: AYUDA!! Combobox anidados
« Respuesta #4 en: 29 Abril 2013, 00:57 am »

Mejor explicado que monkey imposible, a estudiarlo  ;)
En línea

aldg

Desconectado Desconectado

Mensajes: 79



Ver Perfil
Re: AYUDA!! Combobox anidados
« Respuesta #5 en: 5 Mayo 2013, 23:04 pm »

Gracias a todos, estoy aprendiendo un poco e jquery. Ya más o menos he podido hacer lo que quería.

Seguire aprendiendo este lenguaje ya que veo que proporcionara mucha agilidad en una web.
En línea

Intel Quad Core Q9550 2.83 GHZ
4 GB RAM DDR2 800
Asus Nvidia 9500 GT 1GB DDR2
Asus P5N-MX
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Div anidados
Desarrollo Web
mapers 2 2,396 Último mensaje 18 Septiembre 2013, 07:24 am
por mapers
Ayuda con un ComboBox
Programación Visual Basic
fezaca 3 2,194 Último mensaje 10 Enero 2014, 01:48 am
por engel lex
Ayuda con ComboBox
Programación Visual Basic
fezaca 1 1,838 Último mensaje 31 Mayo 2015, 22:18 pm
por Shell Root
Ayuda con Switch anidados
Java
Fryuio 3 7,498 Último mensaje 3 Diciembre 2016, 22:55 pm
por ivancea96
Ciclos anidados
Programación C/C++
mikeluna 3 2,213 Último mensaje 14 Agosto 2017, 12:25 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines