Foros del Web » Programando para Internet » PHP »

Select dependientes con valores por defecto

Estas en el tema de Select dependientes con valores por defecto en el foro de PHP en Foros del Web. Disculpen que salió 3 veces el mismo mensaje. Se me cortaba la conexión cada vez que lo mandaba y pense que no habia sido cargado. ...
  #1 (permalink)  
Antiguo 24/11/2006, 15:47
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
Select dependientes con valores por defecto

Disculpen que salió 3 veces el mismo mensaje. Se me cortaba la conexión cada vez que lo mandaba y pense que no habia sido cargado.
**********************************************
Hola tengo 2 tablas paises y ciudades.

Mi idea es poder cargar la pagina inicialmente con un combo box con los paises y en caso tal que sea la primera vez que el usuario entra a la pagina en el combo box aparezca un pais por defecto. No quiero que diga seleccione un pais.

SERIA ALGO ASI:
COMBO BOX DE PAISES
CIUDAD 1
CIUDAD 2
CIUDAD 3

LAS CIUDADES NO SON UN COMBO BOX SINO UNA LISTA, ESCRIBO TODAS.

Apenas cargo la pagina debe cargar la ultimo pais visitado y su lista de ciudades automaticamente. Si el usuario es la primera vez que entra debe entrar al pais por defecto que yo escoja.

Actuialmente el query me esta cargando el combox de paises pero no me carga utomaticamente las ciudades. Para que me las cargue tengo que seleccionar algun pais, sino no me sale el listado de ciudades de una vez.

Este es el query que uso. Ademas hay 2 errores que me salen en la primera carga de pagina alli los escribo en el codigo.

<?
// datos de conexion a la BD.
$servidor ="localhost"; // host
$usuario ="";
$clave ="";
$basedatos ="base"; // Indicar una Base de datos.


if (!empty($_POST['enviado'])){
// Procesar el formulario ...
echo "Procesando formulario:<br>";
echo "Recibido id_tabla_padre: ".$_POST['id_pais']."<br>";
echo "Recibido id_tabla_hija: ".$_POST['id_ciudad'];
}
else {
// Conexión a la BD
$conexion = mysql_connect($servidor, $usuario, $clave) or die(mysql_error());
mysql_select_db($basedatos, $conexion) or die(mysql_error());
// Obtener el $id_padre del envio a si mismo del formulario ..


$id_pais=$_POST['id_pais']; ///AQUI ME SALE UN ERROR LA PRIMERA VEZ QUE CARGO LA PAGINA Undefined index: id_pais


// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";
// Formar Selec "Padre".
echo "<select name=\"id_pais\" onChange=\"this.form.submit()\">\n";
$SQLconsulta_pais="SELECT * FROM paises";
$consulta_pais = mysql_query($SQLconsulta_pais,$conexion) or die(mysql_error());
While ($registro_pais=mysql_fetch_assoc($consulta_pais)) {
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.
// Se selecciona en consecuencia (selected) la opción elegida.
if ($id_pais == $registro_pais['idpais']){
echo "<option value=\"".$registro_pais['idpais']."\" selected>".$registro_pais['nombre']."</option>\n";
}
else {
echo "<option value=\"".$registro_pais['idpais']."\">".$registro_pais['nombre']."</option>\n";
}
}
echo "</select>\n\n";
mysql_free_result($consulta_pais); // Liberar memoria usada por consulta.
// Formar Select "Hijo" // Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo
// se muestra el mensaje de "seleccine un item" (del select padre).
if (!empty($id_pais)){
$SQLconsulta_ciudad="SELECT * FROM ciudad WHERE idpais='$id_pais'";
$consulta_ciudad = mysql_query($SQLconsulta_ciudad,$conexion) or die(mysql_error());
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
if (mysql_num_rows($consulta_ciudad) != 0){
While ($filaciudades=mysql_fetch_assoc($consulta_ciudad) ){
print('<br>');
print("$filaciudades[nombre]");
print('<br>');
}
}
else {
echo "No hay registros para este Item";
}
}
else {
echo "Seleccione un Item";
}
mysql_free_result($consulta_ciudad); // Liberar memoria usada por consulta. // AQUI ME SALE ERROR LA PRIMERA VEZ QUE CARGO LA PAGINA. UNA VEZ QUE SELECCIONA ALGO EL ERROR DESAPARECE.

echo "</form>\n";
?>

PREGUNTAS CLAVES . Como guardo y cargo el idpais y el idciudad que el usuario seleccione para que la proxima vez que entre pueda cargar ese pais y usar esa idciudad para algo que lo necesite? Usando sesiones? Estas permanecen en el computador del visitante cuanto tiempo? O es usando cookies que se debe guardar y agregar estos valores?
Y la otra es la carga por defecto de un pais en caso de ser la primera entrada del visitante y mostrar la lista de ciudades automaticamente de ese pais.

Les agradezco la ayuda dado que esta es la entrada de la pagina y ando estancado aqui hace rato.

Última edición por msimsi; 24/11/2006 a las 16:14 Razón: Salio 3 veces el mismo mensaje
  #2 (permalink)  
Antiguo 24/11/2006, 18:39
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
Ya resolvi el problema. Ahora necesito saber si es posible identificar permanentemente un usuario de la pagina usando sesiones en php. Que una variable de sesion que guarde permanezca al menos 15 dias. O esto solo lo puedo hacer con cookies?. Quiero poder saber cual es la pagina que el usuario navega por defecto. Depende del pais y la cudad.
  #3 (permalink)  
Antiguo 25/11/2006, 18:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por msimsi Ver Mensaje
Ya resolvi el problema. Ahora necesito saber si es posible identificar permanentemente un usuario de la pagina usando sesiones en php. Que una variable de sesion que guarde permanezca al menos 15 dias. O esto solo lo puedo hacer con cookies?. Quiero poder saber cual es la pagina que el usuario navega por defecto. Depende del pais y la cudad.
Lo recomendable para esos casos es usar una cookie. De hecho una cookie para "recordar" la autentificación del usuario (como hacen estos foros por ejemplo) ... La cookie llevaría en ella el usuario/contraseña (encriptada en MD5 mínimo), la usarías para autentificar al usuario si existe esa cookie, pero tu sistema en sí funcionaría bajo sesiones para propagar sus datos en general.

Aunque, .. usando sesiones, propagando el SID en cookies .. dando el tiempo de vida de las sesiones a esos "15 días" (session.gc_maxtimelife) y definiendo las propiedades de la cookies que PHP creará para propagar el SID a "15 días" (session_set_cookie_paramts()) podrías conseguir el mismo efecto, por qué se basaría en el mismo concepto de la cookie .. donde esa "contraseña" sería el "SID" en sí que relaciona los datos entre cliente-servidor.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 14:47.