Foros del Web » Programando para Internet » PHP »

PHP dentro de if javascript

Estas en el tema de PHP dentro de if javascript en el foro de PHP en Foros del Web. Hola! Verán, estoy intentando ejecutar las siguientes lineas de codigo: if(nombre.length==0){ <?php $_SESSION["nom"]=true; ?> alert("d"); }//if else{ <?php $_SESSION["nom"]=false; ?> alert("r") }//else Los alerts están ...
  #1 (permalink)  
Antiguo 18/04/2013, 02:37
 
Fecha de Ingreso: octubre-2012
Mensajes: 39
Antigüedad: 11 años, 6 meses
Puntos: 0
PHP dentro de if javascript

Hola!

Verán, estoy intentando ejecutar las siguientes lineas de codigo:

if(nombre.length==0){
<?php $_SESSION["nom"]=true; ?>
alert("d");


}//if
else{
<?php $_SESSION["nom"]=false; ?>
alert("r")


}//else

Los alerts están puestos a modo de prueba, en mis intentos por saber que pasa. El caso es que en teoría, entra en la parte del condicional que debería, pero ejecuta las dos lineas de php. Es como si ignorara el condicional y las ejecutara de manera normal.
  #2 (permalink)  
Antiguo 18/04/2013, 02:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: PHP dentro de if javascript

Si ejecuta las dos porque las cosas no pasan en el mismo tiempo....

PHP se ejecuta en el servidor y javascript en el cliente.

El servidor recibe la petición de un fichero, primero lo ejecuta (php) y luego manda el resultado al cliente. Solo ejecuta el php sin ni mirar el javascript.

El cliente recibe el resultado y ejecuta el javascript, en este momento "nom" siempre será falso.

Para cambiar y/o leer el valor de una variable de session, como es el caso, debes hacer una petición al servidor. Para este caso lo ideal seria usar AJAX.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 18/04/2013, 02:55
 
Fecha de Ingreso: octubre-2012
Mensajes: 39
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: PHP dentro de if javascript

Cita:
Iniciado por quimfv Ver Mensaje
Si ejecuta las dos porque las cosas no pasan en el mismo tiempo....

PHP se ejecuta en el servidor y javascript en el cliente.

El servidor recibe la petición de un fichero, primero lo ejecuta (php) y luego manda el resultado al cliente. Solo ejecuta el php sin ni mirar el javascript.

El cliente recibe el resultado y ejecuta el javascript, en este momento "nom" siempre será falso.

Para cambiar y/o leer el valor de una variable de session, como es el caso, debes hacer una petición al servidor. Para este caso lo ideal seria usar AJAX.

El problema es que no tengo conocimientos de AJAX, por lo que a corto plazo no parece que me pueda resultar una opción. Lo ideal, aunque sea para ir tirando, sería una manera un poco chapucera de salir del paso. ¿Sería posible recoger los datos de javascript en variables php y después ejecutar los condicionales en php?
  #4 (permalink)  
Antiguo 18/04/2013, 03:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: PHP dentro de if javascript

Con lo que has explicado de tu aplicación no hay manera de darte una solución alternativa.

Es la misma situación pero a la inversa si son datos de javascript tienes que mandarlos al servidor... la solución es AJAX, get o post.


Código Javascript:
Ver original
  1. var nom=<?php echo $_SESSION["nom"]; ?>;
  2. //la variable js nom sera igual a la de session php pero no es una referencia si no una copia,
  3. //en otras palabras no estan conectadas
  4. if(nombre.length==0){
  5. nom=true;
  6. alert("d");
  7. }else{
  8. nom=false;
  9. alert("r")
  10. }

Ahora tienes que pasar nom (js) al servidor para que actualice $_SESSION["nom"];

El problema no es AJAX o no AJAX el problema es que debes comunicar cosas de un lado al otro (cliente/servidor) hay dos formas de hacer GET o POST, ajax puede usar los dos.... solo es una forma mas elegante de hacerlo (resumiendo mucho!!!).
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 18/04/2013 a las 03:18
  #5 (permalink)  
Antiguo 18/04/2013, 03:18
 
Fecha de Ingreso: octubre-2012
Mensajes: 39
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: PHP dentro de if javascript

Cita:
Iniciado por quimfv Ver Mensaje
Con lo que has explicado de tu aplicación no hay manera de darte una solución alternativa.

Es la misma situación pero a la inversa si son datos de javascript tienes que mandarlos al servidor...


Código Javascript:
Ver original
  1. var nom=<?php echo $_SESSION["nom"]; ?>;
  2. //la variable js nom sera igual a la de session php pero no es una referencia si no una copia,
  3. //en otras palabras no estan conectadas
  4. if(nombre.length==0){
  5. nom=true;
  6. alert("d");
  7. }else{
  8. nom=false;
  9. alert("r")
  10. }

Ahora tienes que pasar nom (js) al servidor para que actualice $_SESSION["nom"];

El problema no es AJAX o no AJAX el problema es que debes comunicar cosas de un lado al otro (cliente/servidor)
Pues muchas gracias! En realidad, lo que estoy haciendo son unos depurados, y me resulta mas sencillo hacerlos con JS que solo con php. Al final opte por depurar todo con php y prescindir del js.

Una pregunta, por pura curisidad: Si el php se ejecuta desde el servidor, y por la tanto antes que el cliente, porque sus eventos si pueden interrumpir la ejecución de código php?
  #6 (permalink)  
Antiguo 18/04/2013, 07:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: PHP dentro de if javascript

Cita:
Si el php se ejecuta desde el servidor
No se ejecuta desde el servidor sino en el servidor el matiz es importante.

Cita:
...porque sus eventos si pueden interrumpir la ejecución de código php?
Por "sus eventos" te refieres a los del cliente?
Pon un ejemplo he intentare explicarlo.

El cliente solo puede afectar a algo del servidor haciendole una petición, cuando haces click en un link por ejemplo, la cual se tiene que transmitir de una maquina la otra por alguno de los protocolos de comunicación.

Esos eventos a los que te refieres estan mandando una orden al servidor....en el caso del click a un link la orden seria "mandame la pagina X" ... y este, el servidor, la interpreta y ejecuta, no estan interrumpiendo directamente nada.

Si la pagina X contiene codigo del lado servidor (php, asp, jsp u otros) el servidor lo ejecuta y cuando tiene el resultado ya libre de todo codigo del lado servidor, lo manda al cliente, para que este lo interprete y lo presente en pantalla.

En el caso que nos ocupa el if(){}else{} no manda nada al servidor. Esto <?php $_SESSION["nom"]=true; ?> nisiquiera esta en lo que ha recibido el cliente. La ejecución de <?php $_SESSION["nom"]=true; ?> no genera ninguna salida hacia el cliente, no asi esto <?php echo $_SESSION["nom"]; ?> el echo haria que el servidor mandase al cliente el contenido de la variable, el contenido no la variable.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 18/04/2013 a las 07:38

Etiquetas: javascript
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 02:46.