Si eres usuario
Ingresa aquí »
¿Eres nuevo?
Regístrate
  • Google
  • Artículos
  • Foros
  • Fotos
  • Videos
  • Amigos
Estás en: Inicio / Foros / Informática / Webmasters / Desarrollo Web

Respuesta
 
LinkBack Herramientas Buscar en este tema
Monito
select option de paises y ciudades
Saludos estimados usuarios.

Recurro a uds por un poco de ayuda, estoy trabajando con PHP mysql, y javascript.

Actualmente estoy haciendo una pagina de registro en PHP la cual en una de las opciones tengo que cargar paises y ciudades del usuario, googleando encontré varias formas, pero encontre 2 metodos interesantes para hacerlo aunque trabajan de distinta forma funcionan perfectamente, les detallo un poco:

1. Desde este site:http://www.dosideas.com/noticias/1-j...y-cascade.html probe el codigo, no utiliza base de datos todo con AJAX y javascript funciona perfectamente los datos son ciudades son cargados instantaneamente sin necesidad de refrescar la pagina (esa es la idea) en problema radica en el siguiente punto, cuando el usuario eligio el pais y ciudad y hace un SUBMIT al formulario (todos los datos son procesados en la misma pagina PHP) uso el metodo POST para las variables.
Mando por post $_POST['pais'] & $_POST['ciudad'] no encontre ninguna forma de que se me quede marcado la ciudad que eligio el usuario cuando realizo el submit (seleccionado dentro del formulario)

2. Usando otro metodo desde el site: http://roshanbh.com.np/2007/12/chang...x-and-php.html en este caso los datos de paises y ciudades se encuentran dentro de una BD mysql a comparacion del primero tambien funciona perfectamente el problema tambien radica en el SUBMIT no logre que me quedara seleccionada la ciudad elegida o que me carge todas las ciudades si el usuario ya eligio un pais.

No se si a alguno de Uds se le presento este problema y pudo solucionarlo de alguna manera, como comente el unic problema que tengo es que no me queda seleccionado la ciudad que eligio cuando hace un SUBMIT, agradeceria sus comentarios
desarrollador
Re: select option de paises y ciudades
es raro el error que tenes, no importa si estas mandando los datos por POST o GET, debería de mandarte los valores a la otra pagina
proba en la pagina que recibe los parametros haciendo un
echo("<pre>");print_r($_POST);echo("<br/>");print_r($_GET);echo("</pre>");die();
para ver que es lo que estas recibiendo, confio que sea un error del formulario HTML y no de que no te esta mandando los parametros por algun error de php
Colgado de la Palmera
Re: select option de paises y ciudades
la opcion 2 http://roshanbh.com.np/2007/12/change-dropdown-list-options-values-from-database-with-ajax-and-php.html no funciona bien con firefox, en iexplorer todo va bien, en fire fox no funciona por que el form debe ser de esta forma:

form
table
/table
/form


la opcion 1 http://www.dosideas.com/noticias/1-j...y-cascade.html funnciona perfecto enviando datos del formulario a una pagina de prueba con este codigo que llame demo2.php:


<html>
<head>
<?php
echo "pais ",$select1;
echo "provincia ",$select2;
echo "ciudad ",$select3;
?>
</head>
<body>

<h1>&nbsp;</h1>
</body>
</html>

el codigo del formulario la que envia la informacion:

<form name="form1" method="post" action="demo2.php">
<label> Ubicacion<br>
<br>
</label>
<div>
<label>Pais
<select name="select1" id="pais">
<option value="AR">Argentina</option>
<option value="ES">Espa&ntilde;a</option>
<option value="MX">Mexico</option>
</select>
</label>
<label>Provincia
<select name="select2" id="provincia">
</select>
</label>
<label>Ciudad
<select name="select3" id="ciudad">
</select>
</label>
</div>
<label><br>
<br>
<input type="submit" name="Submit" value="Enviar">
</label>
<p>&nbsp;</p>
</form>

ejemplo funcionando segun mi necesidad solo paises y ciudades:


http://www.virtualmotionstudio.com/paises/demo.php

Editado por genesyswav - 04.02.2009 20:57 hs..
Monito
Re: select option de paises y ciudades
Hola gracias por las respuestas, bueno en particular probe las 2 con Firefox y trabajo sin problemas, osea no es que tenga problema para seleccionar los paises y ciudades, a ver lo expongo de otra forma:

Digamos que ya tenemos guardado en un BD el pais y ciudad de un usuario, EJ:
$pais=datos['pais']; /* EJ: Argentina */
$ciudad=datos['ciudad']; /* EJ: cordoba */

La idea mia es por ejemplo que automaticamente quede selecionado el pais (la cual en este punto no hay problema) y la ciudad (JUSTO AQUI ES EL PROBLEMA) nose como hacer para que tomando los datos recuperados de la BD quede automaticamente seleccionada la ciudad del usuario.

Gracias y saludos...
Poronga Member
Re: select option de paises y ciudades
No te entendi nada...

A que te referis con eso de que quede seleccionado "automaticamente" el país y la ciudad??
Chimpancé
Re: select option de paises y ciudades
Será que cuando el usuario seleccione el pais automaticamente se carguen las ciudades de dicho pais? nunca lo hice pero podes probar con un iframe que cargue distintos selects.
Osea en el evento onChange del select de pais pones:
onChange="window.nombreframe.location='ciudades.ph p?pais='+document.fomr1.selectpaises.value"
Poronga Member
Re: select option de paises y ciudades
Hace un tiempo habia modificado uno que encontre, hecho en JS, que trabajaba con arrays con nombres iguales, pero con un prefijo que correspondia a los distintos valores de las opciones del select.

Aca lo modifique un poquitito según tus necesidades para que veas como es


La función
Código:
function cambiaProvincias(){
var pais
    pais = document.datos.pais[document.datos.pais.selectedIndex].label
    if (pais != 0) {
    provincias = eval("provincias_" + pais)
    numProvincias = provincias.length
    document.datos.provincias.length = numProvincias
    var i
    for(i=0;i<numProvincias;i++){        
    document.datos.provincias.options[i].value=(i)
    document.datos.provincias.options[i].text=provincias[i]
       }
    }else{
       document.datos.provincias.length = 1
       document.datos.provincias.options[0].value = "0"
       document.datos.provincias.options[0].text = "Debe seleccionar un pa&iacute;s primero"
    }
    document.datos.provincias.options[0].selected = true
}
var provincias_1=new Array("","Buenos Aires","Córdoba","Salta","Jujuy")
var provincias_2=new Array("","Madrid","Sevilla","Málaga","Castilla")
var provincias_3=new Array("","New York","Washington DC","Louisiana","South Caroline")
Los selects

Código:
<form name="datos" action="descargas.php" method="POST">
<select name="pais" onchange="cambiaProvincias()">
<option label="0" value="0" selected="selected">Seleccione una categoría...</option>
<option label="1" value="1">Argentina</option>
<option label="2" value="2">Espa&ntilde;a</option>
<option label="3" value="3">USA</option>
</select>
<select name="provincias">
<option value="0">Debe seleccionar un pa&iacute;s primero</option>
</select>
</form>
Por cada país que agregues, agregas una var nueva en la función que se llame provincias_el valor de la opción correspondiente al país en el primer select, y a esa var, creas un nuevo array que contenga las provincias del país.

Espero que te sirva

Saludos!
Monito
Re: select option de paises y ciudades
Originalmente publicado por fellipeferrate Ver mensaje
Será que cuando el usuario seleccione el pais automaticamente se carguen las ciudades de dicho pais? nunca lo hice pero podes probar con un iframe que cargue distintos selects.
Osea en el evento onChange del select de pais pones:
onChange="window.nombreframe.location='ciudades.ph p?pais='+document.fomr1.selectpaises.value"
Hola, gracias por la respuesta, mira en el caso de la utilización de AJAX para que carge automaticamente las ciudadescorrespondientes a los paises no tengo problema, osea si elijo ARGENTINA se me cargan todas las ciudades correspondientes, por esa parte no tengodrama, esto funciona perfectamente para un buscador, pero lo que quiero hacer es que por ejemplo utilizando los 2 metodos mencionados antes, recuperando los datos del cliente de la BD automaticamente se quede elegido el pais y la ciudad, sin necesidad de que el usuario lo busque manualmente, esto estaria bueno por ejemplo si el usuario quiere actualizar sus datos, tambien me es valido para un registro nuevo.

La idea general es que por ejemplo si un usuario nuevo se registra (hablamos de un formulario con varias opciones) y si este elige un pais y ciudad especifico estas se manentan en el transcurso del registro, para lo cual uso un formulario ejemplo registro.php la cual al hacer sumit se procesan en el mismo formulario, osea

<form name="datos" action="descargas.php" method="POST">

todos los datos son procesados en el mismo formulario, no redirecciono a otra pagina que verifica los datos, si un dato esta mal (ej. edad, email, password, etc) en el mismo formulario le muestra que ese campo esta mal y debe verificarlo.

El problema viene justo aqui al hacer SUBMIT en el formulario puedo recuperar los datos enviados los que me interesan son justamente PAIS y CIUDAD pero lo que no logre es que automaticamente me quede elegido la ciudad correspondiente al PAIS.

usando onChange="window.nombreframe.location='ciudades.ph p?pais='+document.fomr1.selectpaises.value funciona bien si y solo si el usuario elige una opcion sino hace nada no hace nada alli esta el problema, habra alguna otra opción de que carge automaticamente.

Perdon por lo largo del comentario, trato de hacerlo mas especifico el problema.
Poronga Member
Re: select option de paises y ciudades
Sigo sin entender, a ver, vos lo que no logras, es que inserte los valores en la base de datos?

Lo de que queden seleccionadas las opciones automaticamente en los select es facil. Si el usuario se esta editando, haces un input oculto que tenga como valor, la ID del usuario (supongo que trabajaras con IDs auto incrementables).

Haces un consulta a la base en la que selecciones todos los datos que tengan por ID, la ID del input anterior.

Despues usas un fetch para recoger todos los datos, y sacas el valor insertado en país y provincia.

Con un array seteas las opciones de cada select, y mediante un for, el valor que va a tener cada opcion.

Antes de cerrar el option, con un if haces que si el valor que obtuviste de país es igual al valor de la opcion, tenga la opcion selected.

Haces lo mismo para cada provincia y listo.

Espero no habertela complicado mucho :P

Cualquier cosa, PM o respuesta aca

Saludos!
Chimpancé
Re: select option de paises y ciudades
Si queres recuperar los datos antes enviados pero que por un error en otro dato deben ser cargados de nuevo podes hacer dos cosas:
Si la lista la tenes en un tabla de bd entonces cuando haces el while o el for preguntas si esa opcion es la igual a la pasada por POST, si es igual le agregas un echo "selected" adentro de la etiqueta option.
La otra opcion un poco mas bruta es agregar un nuevo option selected con los datos enviados, entonces ese dato se repetira dentro del select con los mismos valores, uno de ellos estara selected.
 
Respuesta



Herramientas Buscar en este tema
Buscar en este tema:

Búsqueda avanzada
Califica este tema
Califica este tema:


Este tema está relacionado con otros ya publicados en el sitio. Podés visitarlos ahora!
Tema Iniciado por Foro Resp. Último mensaje
Form con <select><option> rmendez7 Desarrollo Web 4 28.07.2008 15:54 hs.
Js y Php Formulario con select option onclick y onchange lara82 Desarrollo Web 0 27.11.2007 10:27 hs.
Base de Datos de Paises, Estados y Ciudades vicoar Programación 2 06.06.2007 19:13 hs.
Problemita con SELECT OPTION Kent Brockman Desarrollo Web 7 14.09.2006 12:17 hs.
[Afiche] Afiches de algunos paises! federiico Recursos - Tipografías - Teoría - Tutoriales 5 18.05.2002 20:39 hs.

Ranking de temas y usuarios de este foro
Temas populares Usuarios más activos
• Dataset - Datatable - GridView ???
• Pasar variable con ajax y php
• Problema con menu desplegable en CSS en IE6
• Ayuda con Formularios y redireccionar con...
• Como conectar SQL Server con PHP
• Lukillas
• zetedoz
• Azimutal
• Porklovsky
• clam-i-am


 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
CertificaIAB
{{diadelamigo}}