Foros del Web » Programando para Internet » PHP »

Formulario, paises y provincias

Estas en el tema de Formulario, paises y provincias en el foro de PHP en Foros del Web. Tengo un formulario de registro en el que he creado los campos de pais y provincia, he añadido una tabla llamada estados con las provincias, ...
  #1 (permalink)  
Antiguo 22/05/2010, 04:59
 
Fecha de Ingreso: marzo-2006
Mensajes: 133
Antigüedad: 18 años, 1 mes
Puntos: 6
Formulario, paises y provincias

Tengo un formulario de registro en el que he creado los campos de pais y provincia, he añadido una tabla llamada estados con las provincias, y otra tabla paises con los paises, mi problema es que al registrarse un usuario, en vez de guardarse en la tabla del usuario la provincia y el pais que ha puesto, se me guardan los id de la provincia y del pais, y yo lo que quiero es que se guarde el nombre del pais y de la provincia y no el id.

Los archivos que he utilizado son estos:

en registro.php:

<td><select name="pais" id="pais" onchange="cargarProvincias();" />
<option value="null">Selecciona un pais</option>
<? while($row=mysql_fetch_assoc($paises)){
print '<option value="'.$row['id'].'" >'.$row['pais'].'</option>';
}?>
</select> </td>
</tr>
<tr>
<td>Provincia</td>
<td><select name="provincia" id="provincia" />
<option value="null">Selecciona un pais</option>

</select></td>


en cargarprovincias.js:

function cargarProvincias(){
$('#provincia').html('<option selected>Cargando</option>');

var idPais= $('#pais').val();

var toLoad= 'cargar_provincias.php?pais='+ idPais ;
$.post(toLoad,function (responseText){

$('#provincia').html(responseText);

});

}


y en cargar_provincias.php:

<?
include("config.php");

?>
<?

$pais= $_GET['pais'];
$provincias=mysql_query("SELECT * FROM estados WHERE relacion = '$pais'");
?><?
while( $row= mysql_fetch_assoc($provincias)){
echo '<option value="'.$row['id'].'">'.$row['estado'].'</option>';
}

?>



Soy un poco novato en esto y este codigo lo he encontrado por internet y le hice algunas pequeñas variaciones unicamente, pero no logro saber porque me guarda los id, y no los nombres del pais y las provincias.

Ademas por si a alguien le interesa aqui les dejo un enlace con un archivo sql que contiene paises y provincias de todo el mundo por si les resulta de interes:

http://www.megaupload.com/?d=I242EZCY
  #2 (permalink)  
Antiguo 22/05/2010, 06:43
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Formulario, paises y provincias

Orden (`id`, `estado`, `relacion`)
Valores (1, 'Badakhshan', '1')

$row['id'] => devuelve las id
$row['estado'] => devuelve el nombre de los estado
$row['ralacion'] => devuelve la relacion con el pais al que pertenece

Tu lo tienes asi:
echo '<option value="'.$row['id'].'">'.$row['estado'].'</option>';

Estaria bien.

Ahora aqui;

$provincias=mysql_query("SELECT * FROM estados WHERE relacion = '$pais'");

//el campo relacion no posee nombre de provincias ...menos de paises
relacion = '$pais'"

Entonces si qieres encontrar algo dentro de "relacion" debes poner un numero

Ademas, la tabla estados no posee nombre de paises si no de provincias

Se ve claro aqui:

INSERT INTO `estados` (`id`, `estado`, `relacion`) VALUES
(1, 'Badakhshan', '1'),

Última edición por wiwi74; 22/05/2010 a las 06:54
  #3 (permalink)  
Antiguo 22/05/2010, 07:27
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Formulario, paises y provincias

hola, me equivoque en algunas partes; lo estoy viendo...

Mientras puedes verte esto; hay para descargar un ejemplo completo.

http://www.dosideas.com/noticias/1-j...y-cascade.html

...Me descargue la demo, funciona... creo que podras adaptarla a tus necesidades.

Última edición por wiwi74; 22/05/2010 a las 07:34
  #4 (permalink)  
Antiguo 22/05/2010, 08:15
 
Fecha de Ingreso: marzo-2006
Mensajes: 133
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: Formulario, paises y provincias

Cita:
Iniciado por wiwi74 Ver Mensaje
hola, me equivoque en algunas partes; lo estoy viendo...

Mientras puedes verte esto; hay para descargar un ejemplo completo.

http://www.dosideas.com/noticias/1-j...y-cascade.html

...Me descargue la demo, funciona... creo que podras adaptarla a tus necesidades.
Ok, le echare un vistazo en cuanto tenga un rato.

Estaba viendo lo que me habias dicho antes y si veia algo raro, en la tabla de usuarios me inserta a la perfeccion los id de los paises y las provincias

ejemplo si pepe es de españa y de a coruña

en la tabla usuario, columna pais me inserta el 70 (que es el id de españa)
y en la tabla usuario, columna provincia me inserta el 4238 ( que es el id de a coruña)

en vez de eso me gustaria que insertara en puesto del 70 españa y en puesto del 4238 A coruña.

En cuanto pueda miro lo que me dices! muchas gracias
  #5 (permalink)  
Antiguo 22/05/2010, 09:30
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Formulario, paises y provincias

Haz lo siguiente:
Entra a la url
http://www.dosideas.com/noticias/1-j...y-cascade.html

Descargate la demo, es solo para que tengas las librerias.
Donde dice "DESCARGAR EJEMPLO" haz clik sobre este enlace
"descargar el ejemplo completo de JQuery Cascade"

Descomprime el rar

Busca la carpeta "jquery" y tan solo ponla en el mismo directorio donde pondras tus dos archivos de la consulta.

Ahora te paso los dos archivos, reformados, de la consulta.

NOTA: No te olvides de ponerle a los dos archivos la conexion a la bace de datos ya que quite
include("config.php") debido a que no sabia si era tu coneccion




Este sera tu archivo principal,
llamalo como desees pero que sea un "php" no html:

El primer codigo:
Código PHP:

<!-- fijate que aqui carga la libreria que hay dentro de la carpeta jquery-->
<!-- son como ves 4 archivos (como funcionan estos no importa, es para ingenieros) -->
<script src="jquery/jquery.js" type="text/javascript"></script>
<script src="jquery/jquery.cascade.js" type="text/javascript"></script>
<script src="jquery/jquery.cascade.ext.js" type="text/javascript"></script>
<script src="jquery/jquery.templating.js" type="text/javascript"></script>

<script type="text/javascript" language="javascript">

function cargarProvincias(){
$('#provinciaId').html('<option selected>Cargando</option>');
var idPais= $('#pais').val();
var toLoad= 'verifica.php?pais='+ idPais ;
$.post(toLoad,function (responseText){
$('#provinciaId').html(responseText);
});
}

function cargarLocalidades(){
var idPcia = $('#provinciaId').val();
var toLoad= 'verifica.php?pcia='+ idPcia ;
$.post(toLoad,function (responseText){
$('#mostrarLocalidad').html(responseText);
});
}

</script>

<?php

//PON AQUI TU CONECCION A LA BASE DE DATOS DONDE TIENES TUS DOS TABLAS
//mysql_connect("localhost","root","1234");
//yo la tenia dentro de la base de datos "prueba2"
//mysql_query("use prueba2;");


//primer consulta
$paises=mysql_query("SELECT * FROM paises;");

?>

<select name="pais" id="pais" onchange="cargarProvincias();" />
<option value="null">Selecciona un pais</option>

<? 
while($row=mysql_fetch_assoc($paises)){
print 
'<option value="'.$row['id'].'" >'.$row['pais'].'</option>';
}
?>

</select> 


<select name="provincia" id="provinciaId" onchange="cargarLocalidades();" />
<option value="null">Selecciona una provincia</option>
</select>

<div id="mostrarLocalidad"></div>

<!--  fin del primer script -->


El segundo codigo:
Este sera tu archivo de verificacion, llamalo: verifica.php

El codigo:

Código PHP:

//PON AQUI TU CONECCION A LA BASE DE DATOS DONDE TIENES TUS DOS TABLAS
//mysql_connect("localhost","root","1234");
//yo la tenia dentro de la base de datos "prueba2"
//mysql_query("use prueba2;");

if($_GET['pais'] != ""){
$pais$_GET['pais'];
$provincias=mysql_query("SELECT * FROM estados WHERE relacion='".$pais."'");
echo 
'<option value="">Elija una provincia</option>';
while( 
$rowmysql_fetch_assoc($provincias)){
echo 
'<option value="'.$row['id'].'">'.$row['estado'].'</option>';
}
}

if(
$_GET['pcia'] != ""){
//AQUI SE HARIA UNA CONSULTA A LA TABLA LOCALIDADES
echo "<p />ID recibida: ".$_GET['pcia']."<p />";
echo 
"<p />Por el momento no hay localidades en la base de datos...";
echo 
"<p />Una vez instaladas, se podran recuperar desde verifica.php";
echo 
"<p />Configurando en dicho archivo, las consultas pertinentes...<p />";


Última edición por wiwi74; 09/07/2010 a las 17:59
  #6 (permalink)  
Antiguo 23/05/2010, 15:26
 
Fecha de Ingreso: marzo-2006
Mensajes: 133
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: Formulario, paises y provincias

Muchas gracias por toda tu ayuda, al final lo he solucionado asi:

en registro.php, antes de insertar los datos hago esto:

$pais1 = "select pais from paises where id='$pais'" ;
$resultado1 = mysql_query($pais1);

while ($pais2=mysql_fetch_array($resultado1))
{
extract($pais2);

}

y en cargar_provincias.php cambio esto:

echo '<option value="'.$row['estado'].'">'.$row['estado'].'</option>';


De esta manera consigo lo que quiero.

He estado viendo toda la información que me has pasado y me ha resultado muy interesante! ya la tengo almacenada en mi ordenador para cuando sea necesario!

Muchas Gracias!
  #7 (permalink)  
Antiguo 23/05/2010, 16:13
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Formulario, paises y provincias

OK...!

A mi tambien me sirvio para ver algo de jQuery

Saludos...!
  #8 (permalink)  
Antiguo 25/05/2010, 10:45
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Formulario, paises y provincias

Cita:
Iniciado por Maestro_kanelo Ver Mensaje
Ok, le echare un vistazo en cuanto tenga un rato.

Estaba viendo lo que me habias dicho antes y si veia algo raro, en la tabla de usuarios me inserta a la perfeccion los id de los paises y las provincias

ejemplo si pepe es de españa y de a coruña

en la tabla usuario, columna pais me inserta el 70 (que es el id de españa)
y en la tabla usuario, columna provincia me inserta el 4238 ( que es el id de a coruña)

en vez de eso me gustaria que insertara en puesto del 70 españa y en puesto del 4238 A coruña.

En cuanto pueda miro lo que me dices! muchas gracias
en: <option value="'.$row['id'].'" >'.$row['pais'].'</option>
cambia por: <option value="'.$row['pais'].'" >'.$row['pais'].'</option>

en : echo '<option value="'.$row['id'].'">'.$row['estado'].'</option>';
cambia por : echo '<option value="'.$row['estado'].'">'.$row['estado'].'</option>';

asunto solucionado, te recogera el nombre y ya no el codigo

Etiquetas: provincias, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:24.