Online gebruikers weergeven

Gestart doorKjeld15 reacties26 weergaven

16 berichten · pagina 1 van 2

Kjeld

Lid · Topicstarter

Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hallo,

ik wil een lijst maken met online gebruikers biggrinMijn script is gebaseerd op guildjuhs ledensysteem.

Heb nu in de tabel login_sessions bij usertime (DATETIME) zo staan: 2009-05-31 12:36:46

Moet ik om de online status weer te geven ook nog een kolom in login_members maken met laatste_klik ofzo? Dat ik op iedere pagina (dus iedere keer als de pagina wordt geladen) een mysql_query uitvoeren:
mysql_query("UPDATE login_members SET laatste_klik = NOW() WHERE id = ".$_SESSION[userid]."") or die(mysql_error());

En hoe kijk ik dan wie er in de laatste 5 minuten online waren?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Ja, je moet op de een of andere manier opslaan wat het laatste bezoek was van iemand, anders kun je de laatste online niet ophalen.
0
Krm

Lid

Berichten
6.235
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
je kan wel een script maken die weergeeft dan de bezoekers die laatste 5 minuten ofsow online zijn door lastonline
0
Kjeld

Lid · Topicstarter

Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Nou, ik wil het wel zelf maken kerem winkMoest alleen even een schopje krijgen in de juiste richting biggrin
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
*schopt*

Maar je denkt geheel in de juiste richting ja. Die lastonline wou ik ook eigenlijk gaan vervangen door last_klik. Maar ik ben al gestopt met het systeemyummie
0
Kjeld

Lid · Topicstarter

Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Zo, hij werkt nu, maarrrrrr... Als ik nu op uitloggen druk, blijf ik nog steeds op online staan, zal ik die last_online bij het uitloggen gewoon 5 minuten het verleden in schoppen?

Dan klopt de tijd bij laatst gezien op niet meer cry
Hoe ga ik dit aanpakken?

Nog iets,
het overzicht doe ik zo:

[COLOR= #0000BB]<?
            
                $res[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT username FROM login_members WHERE DATE_ADD(lastonline, INTERVAL 300 SECOND) > NOW()"[/COLOR][COLOR= #007700]);[/COLOR]
                [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_num_rows"]mysql_num_rows[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$res[/COLOR][COLOR= #007700]) ==[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700])
                {[/COLOR]
                
                    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"Er zijn geen online leden!"[/COLOR][COLOR= #007700];
                    
                }[/COLOR]
                [URL="http://www.php.net/else"]else[/URL]
                [COLOR= #007700]{[/COLOR]
                
                    [URL="http://www.php.net/while"]while[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$list[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_fetch_assoc"]mysql_fetch_assoc[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$res[/COLOR][COLOR= #007700]))
                    {[/COLOR]
                    
                        [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]"- "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$list[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]username[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]"<br />"[/COLOR][COLOR= #007700];
                        
                    }
                
                }[/COLOR]
            ?>


Hoe doe ik:

Er is 1 gebruiker online / Er zijn geen gebruikers online / Er zijn $aantal gebruikers online ?
biggrin


Fixed, zo:

[COLOR= #0000BB]<?
$res_online[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT COUNT(1) AS aantal FROM login_members WHERE DATE_ADD(lastonline, INTERVAL 300 SECOND) > NOW()"[/COLOR][COLOR= #007700]);[/COLOR]
        
    [COLOR= #0000BB]$list[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_fetch_assoc"]mysql_fetch_assoc[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$res_online[/COLOR][COLOR= #007700]);[/COLOR]
        
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$list[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]aantal[/COLOR][COLOR= #007700]] ==[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700])
        {[/COLOR]
            
            [COLOR= #0000BB]$aantal_online[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"Er zijn geen online gebruikers!"[/COLOR][COLOR= #007700];
                
        }[/COLOR]
        [URL="http://www.php.net/elseif"]elseif[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$list[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]aantal[/COLOR][COLOR= #007700]] ==[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700])
        {[/COLOR]
            
            [COLOR= #0000BB]$aantal_online[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"Er is 1 online gebruiker"[/COLOR][COLOR= #007700];
                
        }[/COLOR]
        [URL="http://www.php.net/else"]else[/URL]
        [COLOR= #007700]{[/COLOR]
            
            [COLOR= #0000BB]$aantal_online[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"Er zijn "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$list[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]aantal[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]" online gebruikers!"[/COLOR][COLOR= #007700];
                
        }[/COLOR]
?>


Nu dat eerste nog biggrin
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Je kunt het beste zoiets als:

Last_online (bij pagina bekijken updaten)
last_visit (bij uitloggen updaten)
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Hoe t hier op de onlinepagina zit:
SELECT blabla FROM blabla WHERE DATE_ADD(o.datum, INTERVAL 300 SECOND) > NOW() AND l.ingelogd = 1
0
Kjeld

Lid · Topicstarter

Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dus ik moet er een kolom bij maken met l.ingelogd, en deze op 1 zetten bij het inloggen, en weer op 0 bij het uitloggen?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Zo heb ik het ja.

Hij heet gewoon ingelogd, niet l.ingelogd. Ik heb een stukje uit die query gekopieerd, maar die l. verwijst naar de ledentabel (en o. verwijst naar lid_online voor de gasten).
0
Kjeld

Lid · Topicstarter

Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Oké yummieGa het zo even proberen dan biggrin
Owja, nog een vraag dan inderdaad..
Hoe laat ik zien hoeveel gasten er online zijn?

Dus:

Er zijn X leden online, en er zijn Y gasten online.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Ik heb een tabel lid_online, daarin staat iedereen die ooit op one2xs is geweest.
Zodra een IP de site bezoekt, wordt er gekeken of dat IP al in die tabel staat. Zo ja, dan wordt hij geupdatet (datum, pagina, user_id, dat soort dingen), zo nee, dan wordt hij toegevoegd.

In online.php haal ik dan eerst op hoeveel leden er online zijn (WHERE DATE_ADD(o.datum, INTERVAL 300 SECOND) > NOW() AND l.ingelogd = 1 AND o.user_id <> 0), en daarna iedereen.
Dan kun je zo berekenen hoeveel gasten je online hebt.

Een andere methode is om een tabel gast_online te maken, en daar de informatie in te stoppen van iedereen die niet is ingelogd. Nadeel is dan wel dat je data uit 2 tabellen met elkaar moet combineren. Dat had ik liever niet, dus heb ik voor die eerste oplossing gekozen.
0
Kjeld

Lid · Topicstarter

Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Eauw, dat ziet er allemaal best logisch uit..

Kan ook bij allebei de querys een count doen, en dan van elkaar aftrekken, dan heb ik ook het aantal gasten, toch? biggrin
EDIT: dat is volgens mij trouwens wat je mij probeert te vertellen emo
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Kjeld schreef:
EDIT: dat is volgens mij trouwens wat je mij probeert te vertellen emo
Jep. emo
0
Kjeld

Lid · Topicstarter

Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hmmz.. of ik krijg hem niet werkend, of ik ben te gaar..
Waarschijnlijk dat laatste, alhoewel ik hem ook niet werkend krijg confused
Heb nu bij het inloggen deze query geplant:

mysql_query("UPDATE login_members SET lastonline = NOW() AND ingelogd = 1 WHERE id = ".$res[id]."") or die(mysql_error());

In de header:

mysql_query("UPDATE login_members SET lastonline = NOW() AND ingelogd = 1 WHERE id = ".$_SESSION[userid]."") or die(mysql_error());

(wordt op iedere pagina dus geupdate, maar die ingelogd = 1 hoeft dan niet kom ik nu achter yummie
Eauw, zie tijdens het typen van dit bericht mn fout al denk ik emoDie AND kan daar helemaal niet emo
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren