Scheda: Ultimo Refresh postato il 23/09/2008 18:47:48 nel forum programmazione, gdrcd e open source
Buonasera a tutti voi.
Tra i vari problemi che mi hanno assillato durante la creazione di una land questo che vi propongo ora è senza dubbio il più ostico. Premetto che ho già effettuato ricerche sia sulla rete e sia qui, ma senza trovare grossi spunti per la soluzione finale. Prima di chiedere aiuto cerco ovunque possa esserci una strada da percorrere ma non essendoci riuscito come passo finale chiedo il vostro indispensabile intervento.
E' semplice: vorrei inserire in scheda una voce che indica il giorno/mese/anno + l'ora/minuti/secondi dell'ultima volta che è stato effettuato il refresh di pagina in modo tale da sapere esattamente quando un utente esce dalla land.
Ho provato ad effettuare la seguente Select:
$MySql = "SELECT * FROM LogEntrate WHERE Nome = '$pg' ORDER BY DataEvento DESC";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
$rs->close;
ma non vengono riportati l'ora/minuti/secondi.
Ho provato anche a fare una Select sulla tabella Presenti alla voce UltimoRefresh, ma il risultato sarà solo temporaneo e verrà cancellato al successivo riavvio della land.
Mi potreste dare una mano anche stavolta ? Premetto che non essendo un programmatore conosco a malapena l'indispensabile per tirare avanti.
Grazie infinite per il vostro supporto
Pagine → 1 2
23/09/2008 19:04:19
la soluzione da te scelta per risolvere il tuo problema è sbagliata alla radice :)
Vuoi vedere quand'è l'ultima volta che una qualsiasi pagina del tuo sito viene vista dall'utente.
Allora il DB del logentrate non c'entra nulla. Quello segnala solamente l'ultimo ingresso.
Quello che dovresti fare è sfruttare un frame nascosto (magari il refresh.php) per eseguire una query di aggiornamento(Update) su un campo nuovo(di tipo data) che aggiungerai nella tabella dei personaggi.
Quando, poi, andrai a caricare la pagina del personaggio ti basta fare un echo di quello che trovi nel campo nuovo.
23/09/2008 20:23:43
Grazie Rhllor, l'idea l'ho capita ma non ho le basi per poterla realizzare.
Devo prendere il file refresh.php e poi ? :)
23/09/2008 20:39:48
Ma scusate: di cosa si parla? di uscita del personaggio. Dunque quale pagina migliore della pagina di logout??
Innanzitutto aggiungi un campo nella tabella dei personaggi: il campo Uscita (puro esempio)
Prima di azzerare e cancellare la sessione (per intenderci prima del session_unset(); session_destroy();) inserisci una bella query di UPDATE di quel campo. La query dovrebbe essere pressappoco una cosa del genere:
23/09/2008 20:49:24
no xenom, parlava di una logica per vedere se un pg è rimasto appeso o meno. Anche se usi il file di logout certe volte, tranne quando usa il javascript per evitare l'inconveniente, può capitare di chiudere dalla x rossa anzichè dalla classica pagina di uscita.
Appena ho due secondi, comunque, butto giù il codice.
23/09/2008 21:02:31
Un frame nascosto con tutte le pagine che refreshano che ci sono? Basta mettere un aggiornamento del database in mappa.php ogni volta che ci accedi. Pero' e' inutile ai fini di rilevare chi cade e chi no, perche' gia' questo avviene, come pensi che si aggiornino i presenti? Si aggiornano ad ogni refresh di mappa.php.
23/09/2008 21:07:56
23/09/2008 22:14:02
Xenom mi ha capito al volo; scusate, magari non mi sono espresso con i termini corretti.
Ok, quindi:
- aggiungo il campo nella tabella personaggio
- inserisco la query descritta
- aggiungo una select del campo
Ma cosa succede se, come dice Rhllor, un utente esce cliccando la croce in alto a dx ?
23/09/2008 22:32:14 e modificato da xenom il 23/09/2008 22:42:28
23/09/2008 22:45:35
Ho provato a mettere in pratica i passi precedenti ma sicuramente sbaglio qualcosa.
a) Ho creato la tabella Uscita (datetime + 2000-01-01 00:00:00), sotto Personaggio.
b) In Logout, prima delle session unset e destroy ho inserito:
$orauscita=time();
$sql="UPDATE Personaggio SET Uscita='$orauscita' WHERE Username='$_SESSION[Login]'";
$query=mysql_query($sql) or die (mysql_error());
c) In Scheda ho modificato la select precedente con questa:
$MySql = "SELECT * FROM Personaggio WHERE Uscita = '$pg' ORDER BY Uscita DESC";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
$rs->close;
per poi inserire
<td width=100>Ultimo Ingresso</td><td colspan=2> <?=formattadata($rs["Uscita"])?></td>
ma non cambia dal risultato che avevo prima.
Strftime e Onunload come li dovrei utilizzare ?
23/09/2008 22:50:54
Ah, ma te vuoi sapere a che ora esce un PG? Usa il refresh della tabella presenti. Nel momento in cui un PG viene cancellato dai presenti inserisci sul database nel suo record l'ora attuale come ora di uscita.
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
I dati del generatore di rank sono stati aggiornati!