Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di E.C.Web
    Registrato dal
    Dec 2011
    Messaggi
    139

    [PHP/MYSQL] Eliminare record dopo tot tempo.

    Salve ragazzi, ho una tabella nel database che racchiude i dati di un utente.

    | NOME | DATA_LOGIN | DATA_REFRESH|
    Rufus 0000-00-00-00 0000-00-00-00

    Io devo eliminare da questa tabella ( users ) tutti i record che hanno una data_refresh vecchia di 15 minuti.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Converti la data in timestamp fai la differenza col tempo attuale e guarda se ha superato i 15 min

  3. #3
    Utente di HTML.it L'avatar di E.C.Web
    Registrato dal
    Dec 2011
    Messaggi
    139
    Ragazzi ho provato questo, ma sembra non funzionare..dove sbaglio?

    Codice PHP:

    $mysql
    ="UPDATE online SET data_logout = NOW() WHERE (DATE_ADD(data_refresh, INTERVAL 5 MINUTE) < NOW()"
    mysql_query($mysql); 
    In teoria questo codice sopra dovrebbe aggiornarmi la data_logout a NOW() nel caso in cui il data_refresh ( che viene aggiornato ogni volta che si carica la pagina ) sia inferiore di 5 minuti alla data attuale.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da E.C.Web
    Ragazzi ho provato questo, ma sembra non funzionare..dove sbaglio?

    Codice PHP:

    $mysql
    ="UPDATE online SET data_logout = NOW() WHERE (DATE_ADD(data_refresh, INTERVAL 5 MINUTE) < NOW()"
    mysql_query($mysql); 
    In teoria questo codice sopra dovrebbe aggiornarmi la data_logout a NOW() nel caso in cui il data_refresh ( che viene aggiornato ogni volta che si carica la pagina ) sia inferiore di 5 minuti alla data attuale.
    Andando per logica se ogni volta che chiami la pagina lo aggiorni e poi controlli il tempo è ovvio che non sarà mai inferiore

  5. #5
    Utente di HTML.it L'avatar di E.C.Web
    Registrato dal
    Dec 2011
    Messaggi
    139
    Aggiorno solo quella dell'utente che aggiorna la pagina, non di tutti gli utenti, quindi per logica chi non aggiorna piu la pagina non avrà il data refresh settato a now() e quindi perte questo codice. Comunque ti posto la funzione completa così ti è piu di aiuto.
    Codice PHP:
    // Aggiunta degli utenti online [ de-pages/central.php ]
    function add_online($id) {
            
    $mysql "SELECT * FROM users WHERE id = $id";
            
    $result mysql_query($mysql) or die("Non vi è alcun personaggio con quell' ID");
            
    $r mysql_fetch_array($result);
            
    $username $r["username"];
            
    $stato $r["stato"];
            
            
    $mysql "SELECT id FROM online WHERE id = $id";
            
    $result mysql_query($mysql) or die("Non vi è alcun personaggio con quell'ID nella lista dei presenti!");
            
    $r mysql_fetch_array($result);
            
            
    // Inserisco nella lista online il personaggio.
            
    if (!$r) { // Se non c'è, effettuo un inserimento.
            
    $mysql "INSERT INTO online (id, username, stato, data_login) VALUES ($id, '$username', $stato, NOW())";
            
    $eseguo mysql_query($mysql) or die("Fallimento dell'inserimento nella lista Online!");
            } else { 
    // Se è già presente, aggiorno i dati.
            
    $mysql "UPDATE online SET data_refresh = NOW() WHERE id = $id";
            
    $eseguo mysql_query($mysql) or die("Fallimento dell'aggiornamento nella lista Online!");
            }
            
            
    $mysql="UPDATE online SET data_logout = NOW() WHERE (DATE_ADD(data_refresh, INTERVAL 1 MINUTE) < NOW()";
            
    mysql_query($mysql);


  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Dato che è una funzione per gli utenti online, non potevi semplicemente aggiungere un campo date/time nella tabella users e metterci l'ultima data quando un utente visita il sito?
    Dopo di ché quando un altro utente visita tramite un semplice ciclo controlli tutti i timestamp degli utenti(o converti le date in essi) e facendo una differenza fra quello attuale e l'ultimo li segni on se inferiori a tot secondi

  7. #7
    Utente di HTML.it L'avatar di E.C.Web
    Registrato dal
    Dec 2011
    Messaggi
    139
    Mh potresti spiegarti meglio? Che intendi per date/time? Il campo nel database è già DATETIME e inoltre come faccio la differenza con la data attuale?

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da E.C.Web
    Mh potresti spiegarti meglio? Che intendi per date/time? Il campo nel database è già DATETIME e inoltre come faccio la differenza con la data attuale?
    Quando un utente visita il sito:

    -> Esegui un ciclo su tutti gli utenti
    -> Per ogni utente ricava la data e convertila in timestamp (strtotime())
    -> Fai la differenza fra il tempo attuale (time()) e la data convertita
    -> Se minore di tot secondi segna l'utente online stampandolo o altro

  9. #9
    Utente di HTML.it L'avatar di E.C.Web
    Registrato dal
    Dec 2011
    Messaggi
    139
    Originariamente inviato da RoTeam
    Quando un utente visita il sito:

    -> Esegui un ciclo su tutti gli utenti
    -> Per ogni utente ricava la data e convertila in timestamp (strtotime())
    -> Fai la differenza fra il tempo attuale (time()) e la data convertita
    -> Se minore di tot secondi segna l'utente online stampandolo o altro
    E' l'ultimo punto che non riesco a fare... tipo devo fare

    Codice PHP:
    if $stringaconiltime $time eseguo 
    Ma in questo modo non posso definire 5 minuti!

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da E.C.Web
    E' l'ultimo punto che non riesco a fare... tipo devo fare

    Codice PHP:
    if $stringaconiltime $time eseguo 
    Ma in questo modo non posso definire 5 minuti!
    Codice PHP:

    if((time()-strtotime($row['data_visita'])) < 300) echo $row['user'].' è online'
    Ovviamente organizzatelo nel ciclo e tutto, è solo un esempio per intenderci

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.