FAQ
Hola a todos/as!!!!



Tengo un problemilla i no sé muy bien como resolverlo…



Necesito hacer un menú con 2 selects desplegables dinámicos.



El primero no hay problema, sé algo de PHP, por tanto lo cargo
dinámicamente, leyendo de la DB de MySQL y listos.



El problema es que el 2o depende del primero y ahí no sé cómo lo puedo
recargar ya que al programa no le consta el valor del primero hasta que has
aceptado el submit, por tanto no puedo crear una query para el segundo en
base del primero.



Seria algo así como el ejemplo: Países/Capitales



España/Madrid

/Barcelona

Valencia



Alemania / Berlín

/ Frankfurt....





Cuando la primera select vale “España”, le pongo sus capitales, pero, cómo
puedo saber el valor de la primera sin que el usuario haga el submit?



Agradecería que me dieseis alguna pista o si me podéis dar algún código que
lo haga pues genial.



Estuve mirando por ahí i parece que se puede hacer con AJAX pero no tengo ni
idea de eso y la verdad por lo que me estuve mirando así a primera vista no
lo vi nada trivial ni sencillo sino bastante complicado.



Muchas gracias por vuestra ayuda!!!!

Search Discussions

  • Jairo Sánchez at Dec 2, 2010 at 8:45 pm
    Esto lo solucionas con Ajax, hay bastantes ejemplos y códigos ya
    listos para usar en la web, googlea un poco, esto es un procedimiento
    que arranca del lado del cliente con la elección del país, a lo que
    manda una petición a través del AJAX que es recibida por una página
    en PHP la cual ejecuta la consulta con el parámetro del país
    seleccionando y devuelve una lista de ciudades, con lo que construyes
    el nuevo select o los options tu veras como te sirve mejor y envía
    este nuevo objeto al la página la cual in inserta en el id
    especificado.

    no se si esta un poco enredado o logre expresarme bien.

    JSLL

    2010/12/2 Lluís Abad - GMAIL <lluisabad@gmail.com>:
    Hola a todos/as!!!!



    Tengo un problemilla i no sé muy bien como resolverlo…



    Necesito hacer un menú con 2 selects desplegables dinámicos.



    El primero no hay problema, sé algo de PHP, por tanto lo cargo
    dinámicamente, leyendo de la DB de MySQL y listos.



    El problema es que el 2o depende del primero y ahí no sé cómo lo puedo
    recargar ya que al programa no le consta el valor del primero hasta que has
    aceptado el submit, por tanto no puedo crear una query para el segundo en
    base del primero.



    Seria algo así como el ejemplo: Países/Capitales



    España/Madrid

    /Barcelona

    Valencia



    Alemania / Berlín

    / Frankfurt....





    Cuando la primera select vale “España”, le pongo sus capitales, pero, cómo
    puedo saber el valor de la primera sin que el usuario haga el submit?



    Agradecería que me dieseis alguna pista o si me podéis dar algún código que
    lo haga pues genial.



    Estuve mirando por ahí i parece que se puede hacer con AJAX pero no tengo ni
    idea de eso y la verdad por lo que me estuve mirando así a primera vista no
    lo vi nada trivial ni sencillo sino bastante complicado.



    Muchas gracias por vuestra ayuda!!!!


  • Carlos at Dec 2, 2010 at 10:29 pm
    ??Si, yo para esas cosas uso jquery... si alguien no lo conoce, es un
    framework para javascript que permite hacer consultas ajax.

    incluyes jquery y el select de los paises

    Al seleccionar un pais, lanzas un evento javascript que hace la llamada a la
    página donde se encuentra el select de capitales, pasándole el id del pais.
    La llamada a ajax te devuelve cualquier salida que se genere en la página,
    del segundo select, y te la inserta en un contenedor de destino con un id
    (generalmente un div).

    En definitiva si sabes hacer el select 1, el select 2 es igual, te faltaría
    el puente entre ambos, algo así (con jquery claro):

    $("#select_pais").change(function() {

    var idpais = $(this).attr('value');
    $("#div_select_provincia").load('inc/selectprovincias.inc.php',
    {idpais: idpais});

    });

    En el archivo selectprovincias.inc.php recibirías la variable
    $_POST['idpais'] y el select se te cargaría en el div con
    id=div_select_provincia.


    Algo así:

    <select id="selec_pais" >
    <option value="1">España</option>
    <option value="2">Portugal</option>
    </select>

    <div id="div_select_provincia"></div>

    Saludos
    Carlos









    --------------------------------------------------
    From: "Jairo Sánchez" <jairosll@gmail.com>
    Sent: Thursday, December 02, 2010 9:37 PM
    To: "Lluís Abad - GMAIL" <lluisabad@gmail.com>; "php-list"
    <php-es@lists.php.net>
    Subject: Re: [PHP-ES] Select / Menu desplegable dinámico
    Esto lo solucionas con Ajax, hay bastantes ejemplos y códigos ya
    listos para usar en la web, googlea un poco, esto es un procedimiento
    que arranca del lado del cliente con la elección del país, a lo que
    manda una petición a través del AJAX que es recibida por una página
    en PHP la cual ejecuta la consulta con el parámetro del país
    seleccionando y devuelve una lista de ciudades, con lo que construyes
    el nuevo select o los options tu veras como te sirve mejor y envía
    este nuevo objeto al la página la cual in inserta en el id
    especificado.

    no se si esta un poco enredado o logre expresarme bien.

    JSLL

    2010/12/2 Lluís Abad - GMAIL <lluisabad@gmail.com>:
    Hola a todos/as!!!!



    Tengo un problemilla i no sé muy bien como resolverlo…



    Necesito hacer un menú con 2 selects desplegables dinámicos.



    El primero no hay problema, sé algo de PHP, por tanto lo cargo
    dinámicamente, leyendo de la DB de MySQL y listos.



    El problema es que el 2o depende del primero y ahí no sé cómo lo puedo
    recargar ya que al programa no le consta el valor del primero hasta que
    has
    aceptado el submit, por tanto no puedo crear una query para el segundo en
    base del primero.



    Seria algo así como el ejemplo: Países/Capitales



    España/Madrid

    /Barcelona

    Valencia



    Alemania / Berlín

    / Frankfurt....





    Cuando la primera select vale “España”, le pongo sus capitales, pero,
    cómo
    puedo saber el valor de la primera sin que el usuario haga el submit?



    Agradecería que me dieseis alguna pista o si me podéis dar algún código
    que
    lo haga pues genial.



    Estuve mirando por ahí i parece que se puede hacer con AJAX pero no tengo
    ni
    idea de eso y la verdad por lo que me estuve mirando así a primera vista
    no
    lo vi nada trivial ni sencillo sino bastante complicado.



    Muchas gracias por vuestra ayuda!!!!


    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php
  • Mauricio Rodriguez at Dec 3, 2010 at 12:09 am
    Hola puedes hacerlo con jQuery y JSON...

    http://www.electrictoolbox.com/json-data-jquery-php-mysql/



    El 2 de diciembre de 2010 12:30, Lluís Abad - GMAIL
    <lluisabad@gmail.com>escribió:
    Hola a todos/as!!!!



    Tengo un problemilla i no sé muy bien como resolverlo…



    Necesito hacer un menú con 2 selects desplegables dinámicos.



    El primero no hay problema, sé algo de PHP, por tanto lo cargo
    dinámicamente, leyendo de la DB de MySQL y listos.



    El problema es que el 2o depende del primero y ahí no sé cómo lo puedo
    recargar ya que al programa no le consta el valor del primero hasta que has
    aceptado el submit, por tanto no puedo crear una query para el segundo en
    base del primero.



    Seria algo así como el ejemplo: Países/Capitales



    España/Madrid

    /Barcelona

    Valencia



    Alemania / Berlín

    / Frankfurt....





    Cuando la primera select vale “España”, le pongo sus capitales, pero, cómo
    puedo saber el valor de la primera sin que el usuario haga el submit?



    Agradecería que me dieseis alguna pista o si me podéis dar algún código que
    lo haga pues genial.



    Estuve mirando por ahí i parece que se puede hacer con AJAX pero no tengo
    ni
    idea de eso y la verdad por lo que me estuve mirando así a primera vista no
    lo vi nada trivial ni sencillo sino bastante complicado.



    Muchas gracias por vuestra ayuda!!!!


  • David Fraga at Dec 3, 2010 at 7:59 am

    El jue, 02-12-2010 a las 19:30 +0100, Lluís Abad - GMAIL escribió:
    Hola a todos/as!!!!
    Tengo un problemilla i no sé muy bien como resolverlo
    Necesito hacer un menú con 2 selects desplegables dinámicos.
    El primero no hay problema, sé algo de PHP, por tanto lo cargo
    dinámicamente, leyendo de la DB de MySQL y listos.
    El problema es que el 2o depende del primero y ahí no sé cómo lo puedo
    recargar ya que al programa no le consta el valor del primero hasta que has
    aceptado el submit, por tanto no puedo crear una query para el segundo en
    base del primero.
    Seria algo así como el ejemplo: Países/Capitales
    España/Madrid
    /Barcelona
    Valencia
    Alemania / Berlín
    / Frankfurt....
    Cuando la primera select vale “España”, le pongo sus capitales, pero, cómo
    puedo saber el valor de la primera sin que el usuario haga el submit?
    Agradecería que me dieseis alguna pista o si me podéis dar algún código que
    lo haga pues genial.
    Estuve mirando por ahí i parece que se puede hacer con AJAX pero no tengo ni
    idea de eso y la verdad por lo que me estuve mirando así a primera vista no
    lo vi nada trivial ni sencillo sino bastante complicado.
    Muchas gracias por vuestra ayuda!!!!
    Si las respuestas que te han dado, no te valen porque buscas hacerlo tú
    de forma sencilla, lo primero que debes hacer es cargar toda la
    estructura en un array, en javascript, una vez hecho esto, debes cargar
    de forma dinámica (otra vez con javascript) los contenidos, según desees
    o desee el usuario.

    En lugar de en un array y de forma más sencilla, puedes ponerlo en sus
    respectivos combos, dentro de capas DIV y las pones invisibles de
    momento, según se seleccione en el primer combo, haces visible uno u
    otro.

    Por ejemplo:

    <div id="paises">
    <select name="paises" onclick="javascript: mostrar(this);">
    <option value="1">España</option>
    <option value="2">Portugal</option>
    </select>
    </div>

    <div id="provincias-españa">
    <select name="provincias-españa">
    <option value="1">Barcelona</option>
    </select>
    </div>

    <div id="provincias-portugal">
    <select name="provincias-portugal">
    <option value="1">Lo que sea</option>
    </select>
    </div>

    Y en un CSS pones:

    #provincias-españa {
    visibility: hidden;
    }

    #provincias-portugal {
    visibility: hidden;
    }

    Ahora, con javascript, debes hacer la funcionalidad de mostrar uno u
    otro div según selección del usuario en el primer combo al hacer click,
    por eso el onclick="...":

    <script>
    function mostrar(ctrl) {
    alert(ctrl.options[ctrl.selectedIndex].value);
    if(ctrl.options[ctrl.selectedIndex].value == 1) {
    var obj= document.getElementById('provincias-españa')
    obj.style.visibility='visible';
    var obj= document.getElementById('provincias-portugal')
    obj.style.visibility='hidden';
    } else {
    var obj= document.getElementById('provincias-españa')
    obj.style.visibility='hidden';
    var obj= document.getElementById('provincias-portugal')
    obj.style.visibility='visible';
    }
    }
    </script>

    Todo junto:

    <html>
    <head>
    <script>
    function mostrar(ctrl) {
    alert(ctrl.options[ctrl.selectedIndex].value);
    if(ctrl.options[ctrl.selectedIndex].value == 1) {
    var obj= document.getElementById('provincias-españa')
    obj.style.visibility='visible';
    var obj= document.getElementById('provincias-portugal')
    obj.style.visibility='hidden';
    } else {
    var obj= document.getElementById('provincias-españa')
    obj.style.visibility='hidden';
    var obj= document.getElementById('provincias-portugal')
    obj.style.visibility='visible';
    }
    }
    </script>
    <style type="text/css">
    #provincias-españa {
    visibility: hidden;
    }
    #provincias-portugal {
    visibility: hidden;
    }
    </style>
    </head>
    <body>
    <div id="paises">
    <select name="paises" onclick="javascript: mostrar(this);">
    <option value="1">España</option>
    <option value="2">Portugal</option>
    </select>
    </div>
    <div id="provincias-españa">
    <select name="provincias-españa">
    <option value="1">Barcelona</option>
    </select>
    </div>
    <div id="provincias-portugal">
    <select name="provincias-portugal">
    <option value="1">Lo que sea</option>
    </select>
    </div>
    </body>
    <html>
  • David Fraga at Dec 3, 2010 at 8:03 am

    <script>
    function mostrar(ctrl) {
    alert(ctrl.options[ctrl.selectedIndex].value);
    if(ctrl.options[ctrl.selectedIndex].value == 1) {
    var obj= document.getElementById('provincias-españa')
    obj.style.visibility='visible';
    var obj= document.getElementById('provincias-portugal')
    obj.style.visibility='hidden';
    } else {
    var obj= document.getElementById('provincias-españa')
    obj.style.visibility='hidden';
    var obj= document.getElementById('provincias-portugal')
    obj.style.visibility='visible';
    }
    }
    </script>
    Quita el alert de la función del script ;)

    <script>
    function mostrar(ctrl) {
    if(ctrl.options[ctrl.selectedIndex].value == 1) {
    var obj= document.getElementById('provincias-españa')
    obj.style.visibility='visible';
    var obj= document.getElementById('provincias-portugal')
    obj.style.visibility='hidden';
    } else {
    var obj= document.getElementById('provincias-españa')
    obj.style.visibility='hidden';
    var obj= document.getElementById('provincias-portugal')
    obj.style.visibility='visible';
    }
    }
    </script>

    No es que sea importante, pero molesta.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedDec 2, '10 at 7:02p
activeDec 3, '10 at 8:03a
posts6
users5
websitephp.net

People

Translate

site design / logo © 2022 Grokbase