online users weergeven
hey,
ik heb een website met loginsysteem gemaakt. (php en mysql)
probleem is ik wil alle online users uit mijn database weergeven.
Wat werkt is als iemand inlogd er een veld in de database (online) op 1 springt en als hij uitlogt op 0 springt.
Maar hoe geef ik deze gebruikers weer op mijn website:
code:functions.php
code:onlineusers.php
Maar er komt niks op mijn pagina.
Wat doe ik fout, ik sta open voor ieders mening.
Mvg Robin
Toevoeging op 10/10/2012 17:11:18:
ps: in de code hieronder is users mijn database naam
"SELECT `username` FROM `users` WHERE `online` = 1"
ik heb een website met loginsysteem gemaakt. (php en mysql)
probleem is ik wil alle online users uit mijn database weergeven.
Wat werkt is als iemand inlogd er een veld in de database (online) op 1 springt en als hij uitlogt op 0 springt.
Maar hoe geef ik deze gebruikers weer op mijn website:
code:functions.php
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
function online(){
$data = array();
$data = mysql_query("SELECT `username` FROM `users` WHERE `online` = 1");
return $data;
}
?>
function online(){
$data = array();
$data = mysql_query("SELECT `username` FROM `users` WHERE `online` = 1");
return $data;
}
?>
code:onlineusers.php
Maar er komt niks op mijn pagina.
Wat doe ik fout, ik sta open voor ieders mening.
Mvg Robin
Toevoeging op 10/10/2012 17:11:18:
ps: in de code hieronder is users mijn database naam
"SELECT `username` FROM `users` WHERE `online` = 1"
Even een opmerking over je systeem. En wat nou als hij inlogt, even surft en je site verlaat, maar niet uitlogt? Dan blijft hij volgens jouw nog online?
Gewijzigd op 10/10/2012 17:16:25 door - Ariën -
Daar heb ik al aan gedacht door een popup te geven wanneer hij de site probeert te verlaten. Wanneer hij kiest om dan toch de site te verlaten wordt hij automatisch offline gezet
En wat als er een pop-up blocker aanwezig is?
Daar heb je helemaal gelijk.
Wat zou jij doen?
Wat zou jij doen?
kijken naar de tijd, wanneer de persoon voor het laatst actief is. Bij elke view op de site update je deze. Is zijn activiteit langer dan 5 minuten geleden, dan verwijder je zijn record uit de online_leden tabel.
Hiervoor is een aparte tabel veel handiger, dan het gebruik van de leden tabel. Zo kan je ook gasten apart in de gaten houden....
Hiervoor is een aparte tabel veel handiger, dan het gebruik van de leden tabel. Zo kan je ook gasten apart in de gaten houden....
oké bedankt en weet iemand dan een oplossing op mijn oorspronkelijke vraag?
Alvast bedankt
Alvast bedankt
Je kan geen query's echo'en, deze zul je eerst moeten fetchen voordat je er data uit kan halen. Kijk eens naar mysql_fetch_assoc() bijv.
Kijk ook zeker eens naar mijn idee met een aparte tabel.
Kijk ook zeker eens naar mijn idee met een aparte tabel.
zou je een link naar jouw idee over een aparte tabel kunnen geven. Heb eventjes gezocht maar kan het toch niet vinden
ps:@ - Aar- : ik wil je nu al eens bedanken voor de interessante ideën. Het is mijn eerste dag hier op phphulp en moet zeggen dat dit een zeer actief forum is. Niet zoals alle andere forumen waarop je 10 dagen moet wachten op een antwoord.
ps:@ - Aar- : ik wil je nu al eens bedanken voor de interessante ideën. Het is mijn eerste dag hier op phphulp en moet zeggen dat dit een zeer actief forum is. Niet zoals alle andere forumen waarop je 10 dagen moet wachten op een antwoord.
De opbouw van zo'n tabel is als volgt:
- userID (0 voor een gast, of het userID van een gebruiker)
- location (plek waar zijn laatste bezoek is, bijv. forum/topic/1337)
- lastVisit (laatste bezoek in DATETIME)
- IPaddress (ipadres, handig voor herkenning als gast, een uniekeID in een cookie kan ook)
PS: Welkom op PHPhulp.. ;-)
- userID (0 voor een gast, of het userID van een gebruiker)
- location (plek waar zijn laatste bezoek is, bijv. forum/topic/1337)
- lastVisit (laatste bezoek in DATETIME)
- IPaddress (ipadres, handig voor herkenning als gast, een uniekeID in een cookie kan ook)
PS: Welkom op PHPhulp.. ;-)
Gewijzigd op 10/10/2012 20:20:43 door - Ariën -
oké zeer bedankt. juist nog 1 vraagje hoe bereken je het verschil in tijd?
Voor de rest nog maal bedankt voor het idee.
Voor de rest nog maal bedankt voor het idee.
Gewijzigd op 10/10/2012 20:30:38 door - Ariën -
DELETE FROM onlineUsers WHERE lastVisit < DATE_SUB(NOW(), INTERVAL 5 MINUTES)
Moet ik deze code via een cronjob laten uitvoeren? Of zijn er andere manieren?
Moet ik deze code via een cronjob laten uitvoeren? Of zijn er andere manieren?
Gewoon bij elke visit op de website?
Nu ik er eigenlijk over heb nagedacht is het een domme vraag. :s
@- Aar - : ik heb jouw laatste code is gebruikt maar ze werkt niet. Kan het zijn dat er een fout in staat.
Ik de code tussen: mysql_query(" hier de code");
Heb ik iets fout gedaan?
@- Aar - : ik heb jouw laatste code is gebruikt maar ze werkt niet. Kan het zijn dat er een fout in staat.
Ik de code tussen: mysql_query(" hier de code");
Heb ik iets fout gedaan?
Ik zou als ik jouw was in ieder geval goede foutafhandeling met mysql_error() toevoegen.
Gewijzigd op 12/10/2012 12:00:53 door - Ariën -
mysql_query("DELETE FROM `onlineusers` WHERE `lastvisit` < DATE_SUB(NOW(), INTERVAL 5 MINUTES)");
dit is de code die ik gebruik.
Ziet iemand de fout. Alle namen in de database zijn juist.
ps: de database word aangeroepen moest iemand het zich afvragen
dit is de code die ik gebruik.
Ziet iemand de fout. Alle namen in de database zijn juist.
ps: de database word aangeroepen moest iemand het zich afvragen
voer het eens uit in phpMyAdmin. En lees ook dit artikel eens over foutafhandeling.
Gewijzigd op 12/10/2012 18:25:44 door - Ariën -
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MINUTES)' at line 1
ik krijg deze error wanneer ik de query rechtstreeks in phpmyadmin ingeef
ik krijg deze error wanneer ik de query rechtstreeks in phpmyadmin ingeef
gebruik anders MINUTE
Ik verander zijn online status pas naar 0 als hij is uitgelogd.
Dus als je dat ook wilt zet je dit in je uitlog file:
EDIT:
En als die inlogt doe je dezelfde query maar dan voer je bij status "1" in:
Dus als je dat ook wilt zet je dit in je uitlog file:
Quote:
Code (php)
1
2
3
2
3
<?php
$offline = mysql_query('UPDATE users SET status = "0" WHERE username = "'.$_SESSION['username'].'" ') or trigger_error(mysql_error());
?>
$offline = mysql_query('UPDATE users SET status = "0" WHERE username = "'.$_SESSION['username'].'" ') or trigger_error(mysql_error());
?>
EDIT:
En als die inlogt doe je dezelfde query maar dan voer je bij status "1" in:
Quote:
Code (php)
1
2
3
2
3
<?php
$offline = mysql_query('UPDATE users SET status = "1" WHERE username = "'.$_SESSION['username'].'" ') or trigger_error(mysql_error());
?>
$offline = mysql_query('UPDATE users SET status = "1" WHERE username = "'.$_SESSION['username'].'" ') or trigger_error(mysql_error());
?>
Gewijzigd op 12/10/2012 18:49:54 door Remco van Akker




