Foros del Web » Creando para Internet » Diseño web »

Que problema hay en este codigo php?

Estas en el tema de Que problema hay en este codigo php? en el foro de Diseño web en Foros del Web. Este es el codigo, y el resultado con mi resolucion de 1280 px de ancho es siempre "jardin", cuando deberia ser "arbol" no? ¿Por qué? ...
  #1 (permalink)  
Antiguo 09/12/2008, 13:53
Avatar de juanitTo  
Fecha de Ingreso: enero-2007
Mensajes: 406
Antigüedad: 10 años, 10 meses
Puntos: 5
De acuerdo Que problema hay en este codigo php?

Este es el codigo, y el resultado con mi resolucion de 1280 px de ancho es siempre "jardin", cuando deberia ser "arbol" no? ¿Por qué? <script>
var direccion = screen.width;
</script>
<? $direccion = "<script> document.write(direccion) </script>"; ?>
<?
if ($direccion == 1280){
echo "arbol";
}else{
if ($direccion > 1280) {
echo "casa";
}else{
echo "jardin";
}
}
?>
Saludos
__________________
Videos de Metal
  #2 (permalink)  
Antiguo 09/12/2008, 17:29
 
Fecha de Ingreso: diciembre-2008
Mensajes: 15
Antigüedad: 9 años
Puntos: 1
Respuesta: Que problema hay en este codigo php?

Tu problema es que al usar document.write(direccion), el navegador te muestra esa variable. Pero PHP no la lee. Es decir, el contenido de $direccion es "document.write(direccion)". Así no lo puedes comparar con un número.

Entonces la única solución viable para esto es guardar el contenido de la variable de Javascript en una cookie, y luego leerla con PHP.

Código HTML:
<script>
var direccion = screen.width;
document.cookie="ancho="+direccion;
</script> 
Ahí obtenemos el ancho de la web. Este dato lo guardamos en la cookie ancho. Ahora solo nos queda leerla usando este script en PHP. (En la misma página)

Código PHP:
<?php
//Obtenemos la cookie
$direccion=$_COOKIE['ancho'];
//Comparamos el dato con lo que queramos.
if ($direccion == "1280"){
    echo 
"arbol";
} elseif (
$direccion "1280"){
    echo 
"casa";
} else {
    echo 
"jardin";
}
?>
Para comparar he usado elseif para no tener que meter otro else en el código.
La cookie se borra al salir del navegador, por eso no hemos ajustado ningún tiempo.

Espero que esto solucione tu duda. Si no comprendes algo pregunta
Un saludoo!

Última edición por tbass; 09/12/2008 a las 18:19 Razón: Error / Burrada
  #3 (permalink)  
Antiguo 10/12/2008, 08:01
Avatar de juanitTo  
Fecha de Ingreso: enero-2007
Mensajes: 406
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Que problema hay en este codigo php?

Muchas gracias, voy a probar, te aviso :=)
__________________
Videos de Metal
  #4 (permalink)  
Antiguo 10/12/2008, 08:26
Avatar de juanitTo  
Fecha de Ingreso: enero-2007
Mensajes: 406
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Que problema hay en este codigo php?

Creo que hay un problema, hay que refrescar la pagina 2 veces para que la cookie se actualice?
La he subido aqui:
http://72.52.237.164/~videomet/videometal/enlaces.php
Al principio creo que siempre muestra la variable arbol, y luego al recargar dos veces muestra la variable correcta, si no hagan esta prueba, cojan la resolucion de 1280 metanse, les saldra la variable arbol, salgan si quieren cambien la resolucion a 1024 y miren a ver que sale, a mi me sigue saliendo arbol hasta que refresco un par de veces.. Nose el codigo parece estar bien.
__________________
Videos de Metal

Última edición por juanitTo; 10/12/2008 a las 08:35
  #5 (permalink)  
Antiguo 10/12/2008, 09:26
 
Fecha de Ingreso: diciembre-2008
Mensajes: 15
Antigüedad: 9 años
Puntos: 1
Respuesta: Que problema hay en este codigo php?

Jeje a mi me sale bicicleta (aquí no puedo cambiar la resolución a más de 1024 .) Me ha salido esto del principio. Quizás al cambiar la resolución la cookie queda grabada con la resolución anterior. De todas formas ten en cuenta que la mayoría de las personas no suelen cambiar la resolución constantemente .

De todas formas puedes mejorar el sistema haciendo que la cookie dure unos 30 segundos (lo necesario para que el servidor la lea.)
También podría ser que el navegador tarde tiempo en guardar tu cookie. Si este es tu problema, la cookie no estaría establecida; por lo cual estaría vacía. Puedes meter un reload de la página si la cookie está vacia.

Código PHP:
if (isset($_COOKIE['ancho'])){
   if (
$direccion == "1280"){ 
       echo 
"arbol"
   } elseif (
$direccion "1280"){ 
       echo 
"casa"
   } else { 
       echo 
"jardin"
   }
} else {
header ("Location: " $_SERVER['PHP_SELF']);
//Aqui redireccionas a la misma página, hasta que haya cargado la cookie.

Espero que estas recomendaciones te sirvan para algo.
Saludos!

Última edición por tbass; 10/12/2008 a las 09:51 Razón: Limpieza código
  #6 (permalink)  
Antiguo 10/12/2008, 11:40
Avatar de juanitTo  
Fecha de Ingreso: enero-2007
Mensajes: 406
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Que problema hay en este codigo php?

No lo decia por lo de cambiar la resolucion, lo decia por que tengo un amigo creo con mi misma resolución y le he pasado el link de la web y le ha mostrado lo mismo que a mi, quien sabe, quiza tenia una resolucion menor xD.
El nuevo también va perfecto:
http://72.52.237.164/~videomet/videometal/enlaces.php
y aqui ya con el codigo de la web:
http://72.52.237.164/~videomet/videometal/enlacess.php
Muchas Gracias!
__________________
Videos de Metal

Última edición por juanitTo; 10/12/2008 a las 12:09
  #7 (permalink)  
Antiguo 10/12/2008, 14:38
 
Fecha de Ingreso: diciembre-2008
Mensajes: 15
Antigüedad: 9 años
Puntos: 1
Respuesta: Que problema hay en este codigo php?

De nada aunque he cometido un pequeño fallo .
Te lo digo para que lo cambies. Este código si es el definitivo. Espero no haberte mareado mucho

Donde pone
Código PHP:
...
} else {
header ("Location: " $_SERVER['PHP_SELF']);
//Aqui redireccionas a la misma página, hasta que haya cargado la cookie.

Debemos cambiarlo por
Código PHP:
} else {
echo 
"<script>location.href='" $_SERVER['PHP_SELF'] . "'</script>";
//Aqui redireccionas a la misma página, hasta que haya cargado la cookie.

Es porque en PHP no se puede redireccionar al haber escrito ya un código antes (No tuve en cuenta el primer script en Java para solicitar el tamaño de la pantalla.)
Entonces el archivo de antes te iba a dar problemas. A mi me los ha dado precisamente al entrar a tu web . Pero ya he probado este en mi propio sever y va jeje. Hacía tiempo que no lo encendía.

Siento el mareo que te he dado jeje. Pero ya todo solucionado.

Un saludo!

Última edición por tbass; 10/12/2008 a las 14:53
  #8 (permalink)  
Antiguo 10/12/2008, 16:59
Avatar de juanitTo  
Fecha de Ingreso: enero-2007
Mensajes: 406
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Que problema hay en este codigo php?

No me has mareado en absoluto, ni siquiera me habia dado cuenta, ya que enlacess.php funcionaba bien, ya lo he cambiado, muchas gracias de nuevo, has salvado mi proyecto, por que de php ando un poco mal
Saludos!
__________________
Videos de Metal
  #9 (permalink)  
Antiguo 12/12/2008, 09:22
 
Fecha de Ingreso: diciembre-2008
Mensajes: 15
Antigüedad: 9 años
Puntos: 1
Respuesta: Que problema hay en este codigo php?

Bueno pues de nada! A ver cuando me enseñas a hacer esas cosas en flash jaja que eso está de miedo!

Adios!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:42.