Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema al obtener una variable por javascript y pasarla a variable session php

Estas en el tema de Problema al obtener una variable por javascript y pasarla a variable session php en el foro de PHP en Foros del Web. Muy Buenas tengo un problema al pasar una variable desde un formulario select y pasarla a variable de sesión en php para que me recargue ...
  #1 (permalink)  
Antiguo 31/01/2013, 16:53
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Problema al obtener una variable por javascript y pasarla a variable session php

Muy Buenas tengo un problema al pasar una variable desde un formulario select y pasarla a variable de sesión en php para que me recargue la pagina con el valor obtenido, la idea es pasar luego esa variable a una query mysql para que me ordene los articulos.

Os dejo el codigo:

1º va el HTML

Código HTML:
Ver original
  1. [HIGHLIGHT="PHP"]<form action="ini.php" method="post" name="desplegable">
  2. <strong style="font-size:16px;">Ordenar por:</strong>
  3. <select name="orden" id="orden" onchange="ordenar(this.value);">
  4.     <option  id="precio" value="precio">Precio</option>
  5.   <option  value="novedades">Novedades</option>
  6. </form>
[/HIGHLIGHT]

Aqui va el javascript

Código PHP:
Ver original
  1. function ordenar(ordenar1){
  2.  
  3.     document.formulario1.submit();
  4.     ordenar1 =<?php $_POST['ordenar'] ?>;
  5.        
  6.         }

La idea es que cuando se ejecute la función esta me dirija a un fichero llamado in.php que tiene este código:

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     $_SESSION['ordenar'] = $_POST['ordenar'];
  4.     header("Location: http://localhost:8888/codigosPuntos/pruebaTrastienda.php");
  5.    
  6.  
  7. ?>

Para que finalmente me lo presente el la pagina deseada donde esta el formulario, para probar seria suficiente con hacer un echo de dicha variable pero nada.

No debe tener mucha historia pero nose que estoy haciendo mal y no me coge la variable de sesión desde el programa principal.

Muchisimas gracias por vuestro tiempo, un saludo.
  #2 (permalink)  
Antiguo 31/01/2013, 17:08
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema al obtener una variable por javascript y pasarla a variable sessi

No es que estés "haciendo" algo mal.Tienes mezclados conceptos.
Javascript se ejecuta por el lado del cliente.PHP es un lenguaje de servidor.
PHP es procesado por el servidor web, a través de un plugin (o cgi, o..).A menos que tu javascript sea procesado por el plugin php, antes de ser enviado al cliente, todo código php que introduzcas en javascript se enviará tal cual al cliente, lo cual generará los consiguientes errores de sintaxis javascript.
Lo que necesitas es pasar la variable "ordenar" por GET.
La redirección que haces debe ser a :

http://localhost:8888/codigosPuntos/...hp?ordenar=xxx

El código en pruebaTrastienda.php, debe usar el parámetro GET "ordenar" para establecer a "selected" aquel option cuyo value sea igual al valor de "ordenar".Por lo tanto, el establecer qué option está seleccionado, se hace desde el servidor, no desde javascript.
  #3 (permalink)  
Antiguo 31/01/2013, 17:22
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema al obtener una variable por javascript y pasarla a variable sessi

Bueno lo primero muchisimas gracias por la respuesta tan rapida.

Tengo algunas dudas, (estoy acabando mis estudios y ahora empiezo a integrar todo lo aprendido) lo que quiero es que me recargue la pagina con el nuevo valor de la variable sin tener un boton submit visible, para eso tengo entendido que necesito que me lo haga una función js con dom...submit(), lo que yo pretendia desde ese parametro se me habriera un nuevo fichero llamado ini.php y ahí reconocer la variable php y pasarla a una variable de sesion. Y desde el programa principal cargar ese fichero y obtener dicha variable.

Segun lo que me dices no debo usar nada de js? Entonces como recargo la pagina con el nuevo valor de la variable?
Siendo el method="GET" solo debo introducir la variable $_GET['ordenar'] en el codigo php? Eso no me realiza cambio ninguno..Lo siento por la torpeza pero estoy un poco bloqueado con este tema.

Gracias de nuevo
  #4 (permalink)  
Antiguo 31/01/2013, 17:31
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema al obtener una variable por javascript y pasarla a variable sessi

Tengo que decirte que cuando me llega a el fichero ini.php me esta llegando el valor de la variable

Te dejo la url:

"http://localhost:8888/codigosPuntos/ini.php?orden=novedades"

Lo que no me devuelve es a la pagina principal. (Por si ayuda)
  #5 (permalink)  
Antiguo 31/01/2013, 17:51
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema al obtener una variable por javascript y pasarla a variable sessi

Vale ya casi lo tengo, llevabas razón estaba confundiendo el $_POST en vez de $_GET pero ahora tengo un segundo y pequeño problema, cuando llego a ini.php obtengo el valor del formulario, pero como hago un header location la pagina principal se me actualiza y siempre me sale el campo por defecto, sabes como hacer para cuando vuelva sea con el valor tomado?

Muchisimas gracias de nuevo. Un saludo
  #6 (permalink)  
Antiguo 31/01/2013, 17:52
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema al obtener una variable por javascript y pasarla a variable sessi

Te lo explico de otro modo, escribiendo al lado quien hace qué

- Generación de una página con un <select> y varios options <-- servidor, PHP
[ Se envía la página al cliente. ]
- Renderizado de la página <--- cliente, HTML
- Activación del callback change, y submit del formulario <--- cliente, Javascript.
[ Se envía una request al servidor, con parámetros POST ]

- Obtención de la variable POST, y redirección (aqui puedes guardar la variable en la sesión, pasarla como parámetro en la redirección, etc)<-- servidor, PHP
- Ejecución de la redirección <--- cliente, cabeceras HTTP

[El cliente hace una request a la página pasada en la redirección]

- Vuelves a estar en el paso 1.


Como ves, esta secuencia es innecesariamente complicada.Si cuando el select cambia, en el callback javascript, haces directamente:
document.location.href='http://localhost:8888/codigosPuntos/pruebaTrastienda.php?ordenar='+ordenar1;

Tienes lo mismo.
Supongo que, si estás estudiando, la mayor parte de los formularios que has hecho funcionan de la forma que intentas aqui: envío por POST, redirección en el servidor, y eso es lo que aplicas aquí.Pero este modelo es bueno siempre que estés modificando cosas en el servidor.Si lo que estás haciendo es filtrar, ordenar, etc, normalmente, lo que quieres son parámetros GET.

No sé a lo que llamas "página principal", y no sé cuál es la diferencia entre "ini.php" y "pruebaTrastienda.php", y realmente da igual.Intenta comprender los conceptos, no que funcione tu página.Como te digo, el problema no es que "hagas algo mal" en el ejemplo que estás haciendo, sino que estás mezclando conceptos.Lo que tienes que conseguir es aclarar esos conceptos, y resolverás fácilmente el problema.
  #7 (permalink)  
Antiguo 31/01/2013, 18:31
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema al obtener una variable por javascript y pasarla a variable sessi

Bueno muchisimas gracias por tu ayuda. Realmente tengo que repasarme la función de las variables en php y repasar mas los conceptos. Ya lo he solucionado.

Etiquetas: formulario, html, javascript, mysql, select, session
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 08:33.