Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Variables SESSION y onclick

Estas en el tema de Variables SESSION y onclick en el foro de PHP en Foros del Web. Buenos días! Estoy haciendo mi web en varios idiomas, mi idea es hacerlo con SESSION, pero no hay manera de que mis sesiones se establezcan ...
  #1 (permalink)  
Antiguo 01/12/2015, 03:52
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Variables SESSION y onclick

Buenos días!

Estoy haciendo mi web en varios idiomas, mi idea es hacerlo con SESSION, pero no hay manera de que mis sesiones se establezcan correctamente, aquí mi problema:

Tengo en mi menú las típicas banderitas, cada una de ellas con su id, ahora bien, este es el código con el que pretendo establecer las SESSION.

Código PHP:

//Idiomas
$("#ingles").on("click",function(){
    <?php $_SESSION['idioma'] = "ingles";?>
       window.location.reload();  
});

$("#espanol").on("click",function(){
    <?php $_SESSION['idioma'] = "espanol";    ?>
         window.location.reload();  
});

$("#frances").on("click",function(){
    <?php $_SESSION['idioma'] = "frances";    ?>
          window.location.reload();  
});
Mi idea es que cuando el usuario haga click en una bandera, la variable SESSION cambie de valor, luego ya jugaré con if para que me aparezca en un idioma u otro, pero el problema es que no hay manera de que se establezca el valor en la variable.

Los on click funcionan, estan probados, tengo el session start y demás.. si alguien puede decirme donde está el error me ayudaría muchísimo, un saludo y muchas gracias!!
  #2 (permalink)  
Antiguo 01/12/2015, 06:32
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 8 años, 6 meses
Puntos: 19
Respuesta: Variables SESSION y onclick

Pon la bandera con un enlace a.un archivo ".php" que te redireccione al index.
__________________
Si le das el código hecho a alguien nunca va a aprender ni te dará las gracias, si le dices como hacerlo aprenderá y te dará las gracias (algún día).
  #3 (permalink)  
Antiguo 01/12/2015, 08:40
 
Fecha de Ingreso: octubre-2015
Ubicación: España
Mensajes: 21
Antigüedad: 8 años, 6 meses
Puntos: 6
Respuesta: Variables SESSION y onclick

Buenas,

Tu código está mal planteado. Te explico el por qué:
Estas mezclando código PHP con código de JavaScript sin sentido alguno.
Estas tratando de que al darle click a algo se active una función JavaScript y desde PHP en el ámbito de la función JS cambie el valor de una sesión en PHP, y no, no funciona así. Por que lo que hace eso es que cada vez que cargues la página te cambie el valor de la sesión a: ingles, luego a espanol y luego a frances. Y no es lo que queremos!!

Por lo cual, hay varias opciones de hacerlo:
Según lo que tu quieres hacer que es llamando a una función javascript por el evento onClick sobre un elemento, cambie el valor de la sesión y luego actualice.
Muy bien entonces necesitamos que JavaScript llame a PHP y PHP haga el cambio del valor de la sesión. ¿Cómo podemos "llamar" a PHP desde JavaScript? Simplemente una petición HTTP hacia un fichero PHP mediante AJAX con un parametro dentro de la cabecera, por ejemplo GET idioma=(es|en|fr) y el PHP se encarga de gestionar eso.
El PHP lo que realizaría es obtener el parametro "idioma" y según su valor, cambiaría a un lenguaje a otro (puedes usar if o switch).

Otra opción, que es lo que te dijo AlejandraLara, es redirigir a un archivo PHP que te cambie el valor y este PHP te mande a la página donde estabas antes pero con el lenguaje cambiado.

Más opciones... usa COOKIES, cambia la COOKIE desde JavaScript (document.cookie), actualizas la página y PHP se encarga de cargarte el lenguaje a través de esa COOKIE, evitando así una petición al servidor.

Saludos!
  #4 (permalink)  
Antiguo 01/12/2015, 08:58
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Variables SESSION y onclick

Cita:
Iniciado por fbadiola Ver Mensaje
Buenas,

Tu código está mal planteado. Te explico el por qué:
Estas mezclando código PHP con código de JavaScript sin sentido alguno.
Estas tratando de que al darle click a algo se active una función JavaScript y desde PHP en el ámbito de la función JS cambie el valor de una sesión en PHP, y no, no funciona así. Por que lo que hace eso es que cada vez que cargues la página te cambie el valor de la sesión a: ingles, luego a espanol y luego a frances. Y no es lo que queremos!!

Por lo cual, hay varias opciones de hacerlo:
Según lo que tu quieres hacer que es llamando a una función javascript por el evento onClick sobre un elemento, cambie el valor de la sesión y luego actualice.
Muy bien entonces necesitamos que JavaScript llame a PHP y PHP haga el cambio del valor de la sesión. ¿Cómo podemos "llamar" a PHP desde JavaScript? Simplemente una petición HTTP hacia un fichero PHP mediante AJAX con un parametro dentro de la cabecera, por ejemplo GET idioma=(es|en|fr) y el PHP se encarga de gestionar eso.
El PHP lo que realizaría es obtener el parametro "idioma" y según su valor, cambiaría a un lenguaje a otro (puedes usar if o switch).

Otra opción, que es lo que te dijo AlejandraLara, es redirigir a un archivo PHP que te cambie el valor y este PHP te mande a la página donde estabas antes pero con el lenguaje cambiado.

Más opciones... usa COOKIES, cambia la COOKIE desde JavaScript (document.cookie), actualizas la página y PHP se encarga de cargarte el lenguaje a través de esa COOKIE, evitando así una petición al servidor.

Saludos!
Muchisimas gracias por responder!

La verdad es que al probar mi código, la variable SESSION si que obtenia un valor, por eso pensé que se podía hacer perfectamente lo que intenté de si haces click {php}, no consigo encontrar la lógica del todo a esto, aun me queda muchisimo.

De nuevo gracias por la respuesta, voy a intentar utilizar la opción de AlejandraLara porque el uso de COOKIES, GET=es/en.. que has comentado lo veo imposible con mis conocimientos actuales, ¡ojala!, buscaré información de todos modos porque nunca está de más avanzar

Os doy el punto y pruebo a hacerlo.

Un saludo y gracias de nuevo.

edit: Si supieras algún manual o lo que sea para aprender a manejar las peticiones http como me has comentado, te lo agradecería muchísimo, no tengo ni idea respecto a este tema.

Última edición por Morod0; 01/12/2015 a las 09:05
  #5 (permalink)  
Antiguo 01/12/2015, 10:44
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Variables SESSION y onclick

Cita:
Iniciado por AlejandraLara Ver Mensaje
Pon la bandera con un enlace a.un archivo ".php" que te redireccione al index.
Desde la ignorancia, si tuviera que poner 10 idiomas por ejemplo, tendria que crear un página para cada idioma donde le daria un valor a SESSION[idioma]? Te pregunto porque estoy pensando en hacerlo como me has dicho como he escrito arriba, ya que de el uso de cookies y peticiones get no tengo ni idea...

Esa sería una forma correcta?

Gracias por responder!
  #6 (permalink)  
Antiguo 01/12/2015, 10:44
Avatar de agusax  
Fecha de Ingreso: junio-2011
Ubicación: Puerto Real (Cádiz)
Mensajes: 74
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Variables SESSION y onclick

Hola, podrías probar a poner esto para los idiomas:

Este es el archivo que almacena el idioma en la sesión y redirecciona a la página que te encontrabas antes de elegir el idioma:
lang.php
Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     $idioma = $_GET['lang'];
  4.     $_SESSION['lang']=$idioma;
  5.     header('Location:' . getenv('HTTP_REFERER'));
  6. ?>

Ejemplo en la cabecera del index:
Código PHP:
Ver original
  1. <?php
  2.     // Para que no se muestre warning
  3.     error_reporting(E_ERROR | E_PARSE);
  4.  
  5.     session_start();
  6.  
  7.     $_SERVER['REQUEST_URI'];
  8.  
  9.     if($_SESSION['lang']=='en'){
  10.         include('lang/en_index.php');
  11.     }else{
  12.         include('lang/es_index.php');
  13.     }
  14. ?>


Y en el código del index, podrías agregar lo siguiente en la banderita:
Código HTML:
Ver original
  1. <a href="lang.php?lang=es"> <img src ="images/es.png" height="20px"></a>
  2. <a href="lang.php?lang=en"> <img src ="images/en.png" height="20px"></a>

Espero que te sea de ayuda :D

Para mas info, consulta en el manual de PHP.net
  #7 (permalink)  
Antiguo 01/12/2015, 11:06
Avatar de Morod0  
Fecha de Ingreso: julio-2015
Ubicación: Valencia
Mensajes: 63
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Variables SESSION y onclick

Cita:
Iniciado por agusax Ver Mensaje
Hola, podrías probar a poner esto para los idiomas:

Este es el archivo que almacena el idioma en la sesión y redirecciona a la página que te encontrabas antes de elegir el idioma:
lang.php
Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     $idioma = $_GET['lang'];
  4.     $_SESSION['lang']=$idioma;
  5.     header('Location:' . getenv('HTTP_REFERER'));
  6. ?>

Ejemplo en la cabecera del index:
Código PHP:
Ver original
  1. <?php
  2.     // Para que no se muestre warning
  3.     error_reporting(E_ERROR | E_PARSE);
  4.  
  5.     session_start();
  6.  
  7.     $_SERVER['REQUEST_URI'];
  8.  
  9.     if($_SESSION['lang']=='en'){
  10.         include('lang/en_index.php');
  11.     }else{
  12.         include('lang/es_index.php');
  13.     }
  14. ?>


Y en el código del index, podrías agregar lo siguiente en la banderita:
Código HTML:
Ver original
  1. <a href="lang.php?lang=es"> <img src ="images/es.png" height="20px"></a>
  2. <a href="lang.php?lang=en"> <img src ="images/en.png" height="20px"></a>

Espero que te sea de ayuda :D

Para mas info, consulta en el manual de PHP.net
Muchas gracias!!

Como ya he explicado arriba estoy muy verde!, me ha servido mucho, aunque sea sencillo y seguramente muy común desconocia esa forma de enviar variables de página en página.

De nuevo, muchas gracias (a todos)!
  #8 (permalink)  
Antiguo 01/12/2015, 11:09
Avatar de agusax  
Fecha de Ingreso: junio-2011
Ubicación: Puerto Real (Cádiz)
Mensajes: 74
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Variables SESSION y onclick

Cita:
Iniciado por Morod0 Ver Mensaje
Muchas gracias!!

Como ya he explicado arriba estoy muy verde!, me ha servido mucho, aunque sea sencillo y seguramente muy común desconocia esa forma de enviar variables de página en página.

De nuevo, muchas gracias (a todos)!
Para eso estamos, aquí estamos aprendiendo todos juntos jeje
Ese problema lo tuve hace un mes o así, y cada uno da lo que recibe :D

Etiquetas: onclick, session, variable, variables
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 09:10.