Scheda: Ultimo Refresh
Scheda: Ultimo Refresh postato il 23/09/2008 18:47:48 nel forum programmazione, open source e hosting
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
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:
$orauscita=time();
$sql="UPDATE Personaggio SET Uscita='$orauscita' WHERE Username='$_SESSION[Login]'";
$query=mysql_query($sql) or die (mysql_error());
Successivamente vai a modificare la query che prende dal db i dati della scheda aggiungendo anche il select del campo Uscita. Salvi questo dato in una variabile e la stampi dove ti pare con uno strftime();.
Facile, sicuro e preciso.
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:07:56
rhllor ha scritto: 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.
Bhe veramente a me questo
jojorgio ha scritto: ...in modo tale da sapere esattamente quando un utente esce dalla land....
Fa pensare che voglia sapere quando un utente è uscito dalla land. Comunque magari ho interpretato io male.
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
jojorgio ha scritto: 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 ?
Bhe naturalmente non parte la pagina di logout e di conseguenza non aggiorna il campo. Puoi ovviare il tutto facendo aprire la pagina di logout all'onunload della facciata principale del gdr.
Oppure, ancora meglio una bella chiamata asincrona (AJAX per intenderci) che all'onunload vada a quella pagina. In modo che anche se hanno i pop-up bloccati funziona lo stesso.
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:51:15
jojorgio ha scritto: 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 ?
Così al volo direi: cambia il tipo di dato nel db. Non mettere datetime ma metti un int(11) per andare sul sicuro. strftime è la funzione che permette di formattare la data ma probabilmente gdrcd ha la funzioncina fatta più semplice per semplificare il tutto.
24/09/2008 12:05:58 e modificato da xenom il 24/09/2008 12:07:32
jojorgio ha scritto: [quote]xenom ha scritto: Così al volo direi: cambia il tipo di dato nel db. Non mettere datetime ma metti un int(11) per andare sul sicuro. strftime è la funzione che permette di formattare la data ma probabilmente gdrcd ha la funzioncina fatta più semplice per semplificare il tutto.
Fatto, ma la data che ne esce fuori è 23/09/2008, ed a me occorreva anche l'ora/minuti/secondi.
[/quote]
Allora al posto di usare la funzione formattadata (che probabilmente la formatta in gg/mm/aaaa usa la funzione strftime();
strftime("%d/%m/%Y %H:%M:%S",$rs["Uscita"]);
stampa questo al posto di usare formattadata($rs["Uscita"]); e ti funziona tutto bene.
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Project Entropy ↗
Foundation Galactic Frontier ↗
The Coven ↗
Enlisted ↗
Crossout ↗
Fallen Gods ↗
Cafuné ↗
New Orleans ↗
Imperion ↗