Foros del Web » Programando para Internet » PHP »

Saber si una variable a cambiado

Estas en el tema de Saber si una variable a cambiado en el foro de PHP en Foros del Web. Buenas gente, voy a intentar explicarme lo mejor posible haber si me pueden ayudar.. Veran, lo que deso hacer es lo siguiente: Tengo una ventana ...
  #1 (permalink)  
Antiguo 13/02/2006, 11:59
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
Saber si una variable a cambiado

Buenas gente, voy a intentar explicarme lo mejor posible haber si me pueden ayudar..
Veran, lo que deso hacer es lo siguiente:

Tengo una ventana (ventana1) en la que pagino los resultados de una busqueda, en esta ventana hay un boton de nueva busqueda, el cual hace un pop-up con los campos a rellenar sobre la busqueda.

Cuando le doy a enviar los datos de la busqueda, los guardo en un fichero; bien, mi pregunta es....¿Como puede saber la ventana1 que el fichero a sido llenado?, de esa manera mostrar los resgistros coincidentes de la busqueda...

Se que no me he explicado muy bien, pero el cacao que tengo ahora mismo no me permite expresarme mejor.

Gracias de antemano, Salu2
  #2 (permalink)  
Antiguo 13/02/2006, 12:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Las "ventanas" no pueden saber nada de lo que ocurra en el "servidor" si tu no mandas a llamar a ejecutar tu script PHP (que lanzas en esa ventana) a intervalos de tiempo como para ver si "hay nuevos datos".

Es decir, cuando generas una página (salida) desde un script PHP .. al terminar la ejecución del script y entregarse el buffer de salida de PHP al cliente .. se pierde todo control sobre el script PHP a no ser que el -cliente- lo vuelva a pedir: una recarga de página serviría para este propósito ..

Con técnicas como "Ajax" puedes hacer esa "comprobación" o mejor dicho ejecutar cierto código del lado del servidor a intervalos de tiempos realmente cortos sin sobre-cargar al servidor con recargas de página completa grácias al objeto "HttpRequest". Visia el foro de "Ajax" para más información al respecto.

Ahora .. si te fijas bien .. cuando tu "navegas" por tu resultados obtenidos lo que haces es ir "pidiendo" el mismo script que hace tu proceso .. así que es ahí mismo donde puedes perfectamente ir a ver si tu archivo cambió o no (por el critério que uses para saber si cambió: fecha de creación? .. que tenga o no datos? ...(o no lo haces así?)

Un saludo,
  #3 (permalink)  
Antiguo 13/02/2006, 12:53
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
No termino de comprenderlo muy bien, pero seguire intentadolo y me dare un paseo por Ajax.

Muchas gracias Cluster.

Cuando encuentre la respuesta la pondre en este mismo hilo por si a alguien le interesa.

Salu2
  #4 (permalink)  
Antiguo 13/02/2006, 13:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Intenta explicar mejor tu problema ...

No hables de "ventanas" .. ya deberías ver que aquí lo que ejecutas en una "ventana" es un script PHP (o página HTML) ... Con eso nos iremos enteniendo mejor y tu también irás dandote cuenta de algunas cosas.

A mi no me queda claro eso de que "le doy a buscar y se genera el archivo con el resultado" .. o que luego "ventana1" se entere de que el archivo a sido "llenado".

Teóricamente .. si tu haces un script PHP que ejecute tu generación del archivo ese con el resultado y el -mismo- script .. lo lee .. además de llamarlo todo a ejecutar desde tu "popup" (ventana) que abres donde llamas a cierto script PHP .. ya tendrías todo en uno y no haría falta que "nadie" se enterase que el archivo se genere pues es el proceso natural del mismo el que genera -> lee y muestra los resultados ...

Si no es eso .. por favor explicalo mejor con ejemplos ...

Un saludo,
  #5 (permalink)  
Antiguo 13/02/2006, 14:13
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
Cluster, agradezco tu interes, pero por ahora lo he arreglado con un boton para actualizar mientras encuentro otra solución. Respecto a mi vocabulario de "ventana" y eso, viene a que yo hasta ahora trabajaba con object pascal, y hace 1 mes que estoy con programación web, pido disculpas por ello.

Ejemplos... a ver si asi:


tengo 2 script y un fichero, para acceder a esta zona debes estar registrado:
resultadobusqueda.php
criteriobusqueda.php
usuariobusqueda.txt


bien.
Lo primero que se muestra es resultadobusqueda.php, donde se muestra el resultado de la ultima busqueda que hizo el usuario, cuyos criterios estan almacenados en usuariobusqueda.txt.
Aparte del resultado, en resultadobusqueda.php encontramos un boton para realizar una nueva busqueda. Este hace que se habra criteriobusqueda.php en un popup .

En criteriobusqueda.php el usuario elige los criterios de busqueda como por ejemplo un colegio que sea de Londres. Al pulsar el boton enviar que se encuentra en criteriobusqueda.php ,se cierra el popup, se borra el fichero usuariobusqueda.txt y se vuelve a crear con los criterios nuevos.

Ahora, mi pregunta inicial era.

¿Como hago para que resultadobusqueda.php detecte que usuariobusqueda.txt a cambiado?.

Ahora mismo he puesto un boton para actualizar resultadobusqueda.php, por medio de esta actualizacion compruebo si el fichero a cambiado, pero esta solucion no me parece optima.

Espero haber sido.
Gracias de verdad. No se molesten demasiado.

Salu2
  #6 (permalink)  
Antiguo 13/02/2006, 14:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
viene a que yo hasta ahora trabajaba con object pascal, y hace 1 mes que estoy con programación web, pido disculpas por ello.
No hace falta que te disculpes .. pero si que ir entrando en "vocabulario" que se emplea en este entorno de desarrollo para que todos nos entendamos. Y de paso ves olvidando algunas "técnicas" que usabas en tus lenguajes de "escritorio" ..

Si hablas de ventanas que abres .. con una ventana "hija" y una "padre" .. vía javacript siempre puedes hacer cosas como por ejemplo cerrar tu ventana hija y recarga la padre para forzar la ejecución nuevamente de tu script que tienes en tu ventana padre (tu resultadobusqueda.php)

Todo esto se hace con javascript .. no con PHP pues todos esos eventos se originan en el "cliente" no en el servidor (que según te mencioné como funciona .. para esos eventos entre "ventanas" (que se abren/cierran) PHP ya no tiene el control).

Sería algo tipo:

Código PHP:
<?
// proceso PHP
?>
<html>
<head>
<script languaje="javascript">
    function recarga_padre_y_cierra_ventana(){
        window.opener.location.reload();
        window.close();
    }
</script>
</head>
<body onLoad="recarga_padre_y_cierra_ventana()">
</body>
</html>
Esa sería una página HTML que tienes que componer cuando realizes tu proceso PHP en ese mismo script. Es decir criteriobusqueda.php que ejecutas en tu ventana .. hace su proceso, genera tu .txt de resultados y al finalizar generas esa página HTML que lo que hace con su javascript es (cuando se cargue) .. cerrar la ventana y recargar la ventana padre.


Un saludo,
  #7 (permalink)  
Antiguo 13/02/2006, 14:42
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
Perfecto!!! Funciono perfecto.

Muchas gracias cluster, y sobre todo por tu paciencia :P

Nos ha costado pero nos hemos entendido, sabia que tendria que ser algo de java, pero como era todo en php no sabia muy bien donde postear.
Lo tendre en cuenta para la proxima.

gracias una vez mas

Salu2
  #8 (permalink)  
Antiguo 13/02/2006, 14:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Otra acotación más:

javascript

Que no se te olvide "script" y decirlo todo "junto" .. por qué no es lo mismo "Java" que "javascript".

Por lo demás a mi no me molesta que se pregunte sobre como funciona PHP .. cuanto más lo entiendas mejor enfocaras tus respuestas al lenguaje que corresponda según sea un problema principal sobre el "lado del cliente" o del "lado del servidor" .. Sé que esto cuesta al principio (sobre todo cuando uno es autodidacta y no tiene a nadie al lado que le diga todo esto .. ), pero bueno para eso estamos en el foro .. no sólo para resolver preguntas puntuales (que muchas veces son derivadas de falta de esa base). Así que no te dé miedo en hacer preguntas "generales" sobre estos temas "teóricos".

Un saludo,
  #9 (permalink)  
Antiguo 13/02/2006, 15:02
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
más sugerencias

Cita:
Lo primero que se muestra es resultadobusqueda.php, donde se muestra el resultado de la ultima busqueda que hizo el usuario, cuyos criterios estan almacenados en usuariobusqueda.txt


Cuando tengas a dos personas o más en tu sitio web haciendo consultas, podría suceder que:

usuario A: Pone los criterios de búsqueda en Cerveza.
usuario B: Pone los criterios de búsqueda en Motocicleta.

Si ambos lo hacen en un tiempo similar (digamos que A primero, B después), el usuario B tendrá problemas porque va a encontrar resultados de Cerveza, pero él lo que quería era 'Motocicleta'.

El problema es ese .txt, pero con cualquiera de las siguientes técnicas puedes evitar ese problema:
  • variables de sesión
  • propagando los datos con campos ocultos de formulario
  • guardando los criterios en cookies que le mandes al navegador del usuario
  • almacenando criterios en una base de datos
  • usando archivos txt individuales para cada usuario
Saludos
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #10 (permalink)  
Antiguo 13/02/2006, 15:40
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
gracias uamistad por la anotacion, pero lo de busqueda.txt era meramente para el objeto.

El nombre del .txt esta formado por $_SERVER['PHP_AUTH_USER']."busqueda.txt"

Con lo que cada usuario tiene su propio archivo de busqueda.

Pero gracias realmente.

Salu2
  #11 (permalink)  
Antiguo 14/02/2006, 05:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por keroveros
gracias uamistad por la anotacion, pero lo de busqueda.txt era meramente para el objeto.

El nombre del .txt esta formado por $_SERVER['PHP_AUTH_USER']."busqueda.txt"

Con lo que cada usuario tiene su propio archivo de busqueda.

Pero gracias realmente.

Salu2
Y .. controlas que un usuario no se autentifique más de una vez? ...

Por qué si tienes un usuario que hace "login" en un PC y en otro .. vas a tener el mismo problema.

En general para evitar estos problemas lo que necesitas en su base es una forma de identificar ese proceso como único .. para ello se usa algún ID generado aleatóriamente y que sea único. Las sesiones por ejemplo de PHP (www.php.net/session) manejan ese concepto por su denominado "SID" además de crear "archivos" con "variables" independientes en el servidor.

No sé para que generas un "txt" con resultados (de donde los consultas o generas?) .. Sería interesante que expliques como es el proceso que haces y el por qué generas ese ".txt" .. Te hago este comentario por qué dices que llegas de un lenguaje "de escritorio" .. esa técnica que usas es típica cuando programas de esa forma, donde sabes que en ese PC no se va ejecutar más que esa aplicación y en "local" ese "cliente" juega con sus datos. Pero .. en este ambiente "web" donde tienes tus archivos centralizados en un servidor se usan preferentemente otras técnicas: sesiones, resultados entregados directamente al cliente (sin generar "archivos" en el servidor) .. etc.

Un saludo,
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:33.