Llenando un combo de forma dinámica

Estoy llenando un combo de forma dinámica, ¿cómo hago para cuando se escoja una de las opciones me genere una tabla dinámica con otro dato?

1 Respuesta

Respuesta

Si no quieres recargar la página tienes que usar ajax. Si los datos están en una base de datos, puedes llamar con ajax un archivo .php que te genere los datos.

http://www.w3schools.com/ajax/  - es en ingles pero tiene ejemplos y es muy bueno para aprender.

Ok te agradezco la info, pero estoy corto de mente estos días, ¿me podrías explicar mejor? Gracias y disculpa

los pasos serían: en el <select> llamas la función de ajax: <select onchange="javascript: tablaDyn(this.value);">

En el <head> puedes poner tu ajax-javascript. Este es del ejemplo:

<script>
function tablaDyn(str) {
    if (str.length == 0) {
        document.getElementById("contenedor").innerHTML = "Sin datos";
        return;
    } else {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("contenedor").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET", "tabla.php?q=" + str, true);
        xmlhttp.send();
    }
}
</script>

Sí no hay valor tablaDyn(str) - te mostrará "Sin datos".

El valor "this.value" viene del atributo "value" del <option> y pasa al parámetro (str) y se envía a la página "tabla.php" asignándolo al parámetro "q" que sacará los datos de una base de datos o un fichero o de donde sea - que no me has dicho.

"contenedor" es el espacio donde se mostrara la tabla dynamica. puede ser div, p, u otra cosa...

En tabla.php recuperas el dato enviado así:

$q = $_GET['q']; - esto es repito el "value" del <option> elegido

Con este valor buscas los demás valores y montas la tabla...

En la web del ejemplo que te dejé hay ejemplos con arrays y mysql database.

¿De dónde sacará los datos para la tabla?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas