Avatar billede lborkdk Nybegynder
22. oktober 2010 - 16:22 Der er 9 kommentarer og
1 løsning

Vis hvor mange logget in

Hej Eksperten.dk

Jeg har lavet et login script og nu vil jeg gerne ha lavet så man kan se hvor mange der er online.

Jeg har lavet et felt i min database som hedder online og som er 0
når man så logger ind skifter dens værdi til 1 og tilbage til 0 når du logger af.

Så er det bare at jeg skal ha hentet data en ud af databasen og så skal den vise hvor mange der er online ved at tælle hvor mange felter der står 1 i.
Avatar billede kasbas91 Nybegynder
22. oktober 2010 - 17:24 #1
Hej, du må prøve se om det her eksempel virker..

Har ikke prøvet det...



$mysqli = new mysqli("xxxxxxxxx", "xxxxxxxxxxxxx", "xxxxxxxxxxxx", "xxxxxxxxxxxxxxx");
if($online_result = $mysqli->query("select count(online) as seonline from table where online = 1")){
    if($onlineFetch = $online_result->fetch_object()){
        echo $onlineFetch->seonline;
    };
};

Avatar billede webweaver Praktikant
22. oktober 2010 - 17:25 #2
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM minTabel WHERE mitFelt = 1") or die(mysql_error());
               
echo mysql_result($antal_online,0);
Avatar billede repox Seniormester
22. oktober 2010 - 17:28 #3
Der er ikke taget højde for at ikke alle mennesker logger ud - du kan potentielt have 1000 online jf. databasen, men måske kun tre aktive besøgende...
Avatar billede webweaver Praktikant
22. oktober 2010 - 17:34 #4
Derfor vil du tit opdatere din online database hver 5 minut.
Det gør jeg ihvertfald selv.

Et komplet eksempel kunne se således ud,

$ip = $_SERVER['REMOTE_ADDR'];
                                   
$tjek_ip = mysql_query("SELECT COUNT(*) AS antal FROM minTabel WHERE ip='$ip'") or die(mysql_error());
                                   
if(!mysql_result($tjek_ip,0)) {

mysql_query("INSERT INTO minTabel (time, ip) VALUES (NOW(),'$ip')") or die(mysql_error());

} else {

mysql_query("UPDATE minTabel SET time=NOW() WHERE ip='$ip'") or die(mysql_error());

}

mysql_query("DELETE FROM minTabel WHERE date_add(time,interval 5 MINUTE) < NOW()") or die(mysql_error());
               
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM minTabel WHERE online = 1") or die(mysql_error());
               
echo mysql_result($antal_online,0);
               
mysql_close($connection);
Avatar billede webweaver Praktikant
22. oktober 2010 - 17:38 #5
Det skal naturligvis stadig modificeres lidt til dit system. Du skal fx. opdatere dit online felt, så det går i 0, når personen slettes for online listen og så videre ...
Avatar billede lborkdk Nybegynder
22. oktober 2010 - 17:47 #6
det med at opdatere databasen har jeg styr på jeg skal bare ha gjort så den tæller hvor mange der er online ved at tælle alle 1 tallene i databasen og så skrive hvor mange der er online
Avatar billede webweaver Praktikant
22. oktober 2010 - 17:50 #7
Det svarede jeg dig på, på mit første svar. #2.

$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM minTabel WHERE mitFelt = 1") or die(mysql_error());
               
echo mysql_result($antal_online,0);

Den viser hvor mange som er sat til 1.
Avatar billede repox Seniormester
22. oktober 2010 - 17:51 #8
Det er enormt ineffektivt - hvis man alligevel vil lave noget opdatering af databasen i ny og næ, var det bedre at tilføje et felt til 'users' tabellen navngivet 'last_activity' og opdatere timestamp for den enkelte bruger ved hver sidevisning for så at tælle sammen hvor mange der har været aktive inden for de sidste fem minutter.
Avatar billede lborkdk Nybegynder
22. oktober 2010 - 17:54 #9
webweaver tak for hjælpen smid lige et svar :)

repox tak fordi du vil hjælpe mig men jeg nøjes med den nemme løsning lige til at starte med :)
Avatar billede webweaver Praktikant
22. oktober 2010 - 18:02 #10
Godt at du kunne bruge det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester