Funzione che ogni tot secondi carica una pagina php

Usando la funzione date() avrei necessità di controllare dopo tot tempo se un utente è ancora in linea (sto scrivendo una chat in php).

Per far questo io dovrei memorizzare la data in cui l'utente ha interagito l'ultima volta con il mio programma (inserendo un messaggio) e controllare se (per esempio ogni 5 min) l'ultimo messaggio scritto è stato digitato meno di tot minuti fa.

Pero come faccio a fare un controllo del genere?

Esiste una funzione apposita?

tnx! ;)

Consigli?

tnx! :)

inviato 10 anni fa
Downloader
X 0 X

prova a guardare questa discussione:

http://www.phpnews.it/forum/index.php?topic=595.msg3616#msg3616

per calcolare la differenza tra due date:

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Purtroppo non mi è stato di nessun aiuto  :(

Non dice come gestire sta cosa ma solo per vedere se un utente è (teoricamente) in linea o no e questo non è il mio problema purtroppo.

Io devo essere pratico.

risposto 10 anni fa
Downloader
X 0 X

Dovrebbe essere una cosa del genere:

<?php
$query = "SELECT utente 
FROM tabella_utenti 
GROUP BY nome_utente 
HAVING MAX(data_messaggio) >= DATE_SUB(NOW(), INTERVAL 5 MINUTE)";

?>

Per il refresh, o lo fai con i meta, o con javascript, o altrimenti con gli header di php:

http://it.php.net/manual/en/function.header.php

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X
GROUP BY nome_utente 
HAVING MAX(data_messaggio) >= DATE_SUB(NOW(), INTERVAL 5 MINUTE)";

Scusa una cosa, potresti gentilmente spiegarmi a che servono queste istruzioni?

Nella prima riga cos'è GROUP BY

Nella seconda data_messaggio si riferisce alla data dell'ultimo msg che ha scritto l'utente? INTERVAL invece è il tempo di attesa per rifare la query?

risposto 10 anni fa
Downloader
X 0 X
Nella seconda data_messaggio si riferisce alla data dell'ultimo msg che ha scritto l'utente?

No, quel 'data_messaggio' è un ipotetico campo del DB (YYYY-mm-dd H:i:s) in cui suppongo tu inserisca la adta del messaggio quando questo venga inserito

INTERVAL invece è il tempo di attesa per rifare la query?

INTERVAL è un costrutto della funzione DATE_SUB (e non solo) che mi serve per dirgli, in questo caso, di farmi calcolarmi la data specificata meno TOT minuti...

Ti rimando alle funzioni sulle date del manuale ufficiale:

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Grazie 1000!

risposto 10 anni fa
Downloader
X 0 X

Inoltre:

GROUP BY nome_utente

serve a raggruppare i risultati della query per il campo nome_utente, cioè considera dei sottogruppi di righe che hanno lo stesso nome_utente e su quelle verifica la condizione specificata nell'having:

HAVING MAX(data_messaggio) >= DATE_SUB(NOW(), INTERVAL 5 MINUTE)";

 :bye:

risposto 10 anni fa
Nico Colonna
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda