[SOLUCIONADO] Llenar lista dependiendo de otra lista

Iniciado por Only, Octubre 02, 2013, 02:43:45 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 02, 2013, 02:43:45 PM Ultima modificación: Octubre 25, 2013, 11:51:02 PM por Expermicid
Hola a todos les cuento que en un formulario que estoy haciendo, quiero poner campos como

Nombre
Correo
Telefono
Estado
Ciudad
Comentario

Lo que quiero hacer es por ejemplo : en la lista de Estados, al momento que el usuario seleccione el estado donde vive, se llene la lista de Ciudad, con las ciudades del estado que selecciono.

Espero que me puedan dar una idea de como hacerlo ya que no puedo

Gracias a todos

¿Pero utilizando que? ¿Bases de datos? Si no nos das mas detalles no podemos ayudarte
Skype: trollmine99

no bro no estoy utilizando bases de datos, lo estoy haciendo con option value

Lo siento xD yo de html se poco hasta nada
Skype: trollmine99

TrollMine tiene razón, no se te entiende muy bien.

Tu tienes una lista con un tag select imagino (<select name...><option>...</option><option>...</option></select>) y quieres que al seleccionar una opción de ese listado se cargue otro listado diferente con nuevas opciones dependiendo de la opción seleccionada en el primer listado.

la pregunta de trollmine es donde tienes los datos que usarás para completar el segundo listado?

las opciones donde están guardadas?

si quieres obtener las opciones desde php puedes usar AJAX para cargar con jquery el nuevo listado mandando la opción que ya seleccionaste a un archivo php (que podría sacar el nuevo listado de una tabla de "estados" y el primer listado sacarlo de una tabla de "paises") no se si me explico.

Aunque si solo quieres manejar con paises y sus estados únicamente y no fue solo un ejemplo de lo que querías hacer, tengo entendido que lo puedes hacer con una de las API de google y usar js para cargar los paises desde la API de google que seguro que estará más completa que una base de datos de paises y estados de tu autoría.

En todo caso, siempre usarás javascript (preferiblemente con el framework jquery o alguno del estilo) para verificar que opción seleccionó y cargar las opciones de otro listado.
Usando ajax como mensioné antes puedes obtener el nuevo listado desde un php, y que obviamente lo puede sacara de una base de datos.

no se si me explico, es complicado explicar cosas a alguien que recién empieza traté de ser lo más simple posible, pero aveces al querer hacer las cosas simples pueden llegar a quedar confusas.

Un saludo!

Octubre 04, 2013, 11:49:58 AM #5 Ultima modificación: Octubre 05, 2013, 04:01:37 AM por s00rk
HTML:
Código: html

<!DOCTYPE html>
<html>
<head>
</head>
<body>

    Estado:
    <select id="estados">
    </select>
    <br />
    Ciudad:
    <select id="ciudades">
    </select>

</body>
</html>


Javascript (usando jQuery):
Código: javascript

$(document).on('ready', function (){
    $.get('/estados.php', function (data){
        data = $.parseJSON(data);
        $.each(data, function (i, d){
            $('#estados').append('<option value="' + d.id + '">' + d.nombre + '</option>');
        });
    });
    $('#estados').on('change', function (){
        var idEstado = $(this).val();
        $('#ciudades').empty();
        $.get('/ciudades.php', { id: idEstado }, function (data){
            data = $.parseJSON(data);
            $.each(data, function (i, d){
                $('#ciudades').append('<option value="' + d.id + '">' + d.nombre + '</option>');
            });
        });
    });
});


PHP:

Estados:
Código: php

<?php
$query = mysql_query('SELECT ID, Nombre FROM Estados Order By Nombre ASC');
$arr = array();
while($resultado = mysql_fetch_assoc($query))
{
    $arr[] = $resultado;
}
echo json_encode($arr);
?>


Ciudades:
Código: php

<?php
$idEstado = (int)$_GET['id'];
$query = mysql_query('SELECT ID, Nombre FROM Ciudades WHERE idEstado = ' . $idEstado . ' Order By Nombre ASC');
$arr = array();
while($resultado = mysql_fetch_assoc($query))
{
    $arr[] = $resultado;
}
echo json_encode($arr);
?>

s00rk, es una buena muestra de voluntad que dejes el código, pero siempre tratamos que la gente aprenda por si misma buscando y leyendo, dandole pistas, no todo el código, de todos modos, se agradece que le prestes el código que para ti soluciona su problema, pero ten en cuenta eso.

Si me veo en la necesidad de comentarte lo que en mi opinión podrías mejorar, voy a dejar de lado javascript, porque no creo estar capacitado como para expresar mi opinión, no se de javascript tanto como quiciera, entiendo tu código a la perfeccion, pero no estoy en posición de criticar nada.

Lo que si quiero mensionar, es que en lo que respecta a php, usas mal el operador de concatenación, ya que usas comillas dobles que obligan al interprete a parsear las instrucciones contenidas en ellas, podrías ignorar al concatenador y poner directamente la variable en la instrucción sql, sin usar ".", ya que de todos modos parseará la instrucción. O lo que estaría realmente correcto es tratar a la linea de SQL como una sentencia literal (usando apóstrofes) y usando un operador de concatenación.

No es mi intención ofender ni nada, pero me pareció justo, ya que le permites a only ver tu código, ofrecerte una mejora hacia tu código y quizás algo que no tenías en cuenta.

saludos!

ohhh si, sorry, de hecho lo coloque ya que estaba trabajando ya sobre algo y solo saque el codigo de mi projecto  y lo pase aca, exepto la de php en este ya llevo tiempo sin usarlo hehe.

Y si se agradece tu comentario, de hecho eso no lo sabia, anteriormente lei que el usar " en ve de ', es mas rapido, aunque nunca se menciono nada de concatenar, igualmente entones preferiria usar ' , ya que pues se me hace mas comodo a la hora de luego checar tener separado la consulta de la variables que use en ellas.

Igual gracias por eso, si llego a regresar a php puro sin algun framework lo hare de esa forma xP

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
ohhh si, sorry, de hecho lo coloque ya que estaba trabajando ya sobre algo y solo saque el codigo de mi projecto  y lo pase aca, exepto la de php en este ya llevo tiempo sin usarlo hehe.

Y si se agradece tu comentario, de hecho eso no lo sabia, anteriormente lei que el usar " en ve de ', es mas rapido, aunque nunca se menciono nada de concatenar, igualmente entones preferiria usar ' , ya que pues se me hace mas comodo a la hora de luego checar tener separado la consulta de la variables que use en ellas.

Igual gracias por eso, si llego a regresar a php puro sin algun framework lo hare de esa forma xP

:) las comillas dobles lo que hacen es parsear una cadena, en otras palabras analizan la cadena en busca de variables por ejemplo que puedan estar siendo utilizadas, esto es un poco brusco pero para que te des una idea.

Los apostrofos le indican a php que dentro de ellos, lo que esté escrito es literal, osea que no hay variables ni nada, lo que está ahí debe ser interpretado tal cual está escrito.

La concatenación (los puntos), nos permiten unir variables por ejemplo, con literales u otras variables.

No tiene sentido utilizar comillas y concatenadores ya que podrías usar tranquilamente la variable dentro de la comilla.

Y no es preciso afirmar que php es más "rápido" o más lento por usar literales con concatenadores o parsear los textos, quizá lo sea, pero yo no cuento con medios fidedignos para probarlo.

Lo que si te puedo decir, es que habla mal de un código cuando se mezclan conceptos claves, y es esa la razón de que la gente usa literales con concatenadores o parsea el texto, porque hacer las cosas de forma innecesaria solo denota ignorancia, por eso es preciso que se aclaren este tipo de cosas. (aclaro que no trato de decirte ignorante en lo absoluto, es una simple explicación de por que deberían usarse las cosas para lo que fueron diseñadas y no para otra cosa, espero no me mal interpretes)

Un saludo :)