Problema con date () e database

Alessio Pinna

Nuovo Utente
15 Set 2012
22
0
0
Buongiorno Forum :-P

Ho un problemino da risolvere :

Dovrei riuscire a stampare su schermo l'orario d'accesso e l'orario d'uscita di un'utente :

Partiamo dal presupposto che i due tipi di orari verranno salvati in una tabella chiamata "admin" in due colonne di tipo TIME chiamate "timeon" e "timeoff" (quindi quando hanno valore empty stanno in questa condizione: 00:00:00).

Per richiamare il contenuto (e/o aggiornarlo) di queste due colonne uso questo metodo :

PHP:
$admin1= mysql_query("SELECT timeon,timeoff FROM admin WHERE id=1;");
                        while ($row1= mysql_fetch_assoc($admin1)){                        
                        $timeon1=$row1["timeon"];
                        $timeoff1=$row1["timeoff"]; 
                         }

Senza che vi sto a scrivere tutta la parte che descrive come identifico lo stato dell'utente , vi dico solo che ho una variabile di nome $stato che avrà due tipi di valori : login o logout.

E fino a qui ci siamo !!!

Adesso dovrei riuscire a mandare in database (nelle due colonne descritte sopra) gli orari di login e logout , io ho provato in questo modo :

PHP:
<?php 
                                                   if($stato == "login")
                                                   {
                                                   echo "LOGIN";
                                                   if ($timeon1 ="00:00:00")
                                                   {
                                                   $dataon1 =date("H:i:s");
                                                   $phpdateon1 = strtotime( $dataon1 ); 
                                                   $query = mysql_query("UPDATE admin SET timeon = FROM_UNIXTIME($phpdateon1) WHERE id = 1");
                                                   }                                                   
                                                   }
                                                   else
                                                   {
                                                   echo "LOGOUT";
                                                   if ($timeoff1 ="00:00:00")
                                                   {
                                                   $dataoff1 =date("H:i:s");
                                                   $phpdateoff1 = strtotime( $dataoff1 ); 
                                                   $query = mysql_query("UPDATE admin SET timeoff = FROM_UNIXTIME($phpdateoff1) WHERE id = 1");
                                                   } 
                                                   }
                                                   
                                                   ?>
                                                   </b><br>                                                
                                                   
                                                   <b> - Login at : <?php  echo $timeon1; ?></b><br>  
                                                   <b> - Logout at : <?php echo $timeoff1; ?> </b><br>                            
                                                   
                                                   </label>
                                                   <?php

Quale è il problema?

Ho provato a mettere un controllo sulle due colonne e far scrivere nel database gli orari solo quando queste sono "empty" (quando si dovrà analizzare un'altro utente l'aggiornamento delle colonne per un nuovo ciclo utente verrà fatto con un tool esterno) , ho fatto cosi perchè se io scrivo direttamente l'aggiornamento dell'orario in DB e poi vado a ricaricare la pagina l'orario salvato si aggiorna e quindi gli orari che mi servono (login e logout) si vanno a perdere (questo è uno dei problemi) , il secondo problema sta nel fatto che se l'utente si collega e quindi fa il login , mi aggiorna il dato in database nella colonna timeon ma non mi stampa (echo $timeon1; ) subito il suo contenuto ma lo fa solamente quando l'utente fa il logout , che poi mi aggiorna l'orario in database in timeoff ma non mi stampa (echo $timeoff1; ) il suo contenuto quando l'utente fa il logout

Alla fine mi serve :
- Qualcosa che mi mantenga in database nelle due colonne corrispettive gli orari d'accesso e d'uscita senza che questi si aggiornino ad ogni ricarico della pagina
- Ovviamente il programma deve riuscire a stampare l'orario d'accesso subito dopo che l'utente ha fatto il login e lo stesso deve fare per il logout

Vi ringrazio in anticipo
 
Ultima modifica:
Alla fine mi serve :
- Qualcosa che mi mantenga in database nelle due colonne corrispettive gli orari d'accesso e d'uscita senza che questi si aggiornino ad ogni ricarico della pagina
- Ovviamente il programma deve riuscire a stampare l'orario d'accesso subito dopo che l'utente ha fatto il login e lo stesso deve fare per il logout
E' più semplice di quanto tu possa immaginare.
Basta andare nella pagina di login e aggiungere il current timestamp oppure l'ora esatta (come preferisci) nel db.
Stessa cosa vale per la pagina di logout inserendo l'ora in cui fa il logout.
Tu in quel modo mi sembra di capire che lo fai per ogni pagina e così crei un casino.
 
Però in questo modo non registrerai l'orario di uscita in caso l'utente chiuda il browser senza passare per il logout.

Se vuoi gestire anche questa situazione, dovrai salvare le sessioni nel database e farle scadere dopo un determinato periodo di inattività. Quando scadono salvi anche l'orario di logout.

Generalmente, però, nei log si salvano solamente gli accessi, non le uscite.
 
Questo è uno dei motivi per cui di solito si registra l'orario di ingresso, unito al fatto che l'orario di uscita è solitamente inutile.

Di solito lo utilizzano i giochi online per far vedere la durata alla fine di ogni sessione di gioco appunto (e anche la totale).
 
A parte quelli che hanno l'applicativo che va scaricato e installato (che utilizzano metodi diversi) anche alcuni semplici giochi online lo fanno.
Ma che intendi per giochi online?
Giochi appunto in rete con altri giocatori reali che interagiscono attraverso il browser :)
 

Discussioni simili