Avatar billede h-w.dk Nybegynder
28. juli 2003 - 18:38 Der er 4 kommentarer og
1 løsning

Brugereonline script!

Jeg har lavet sådan, at alle oprettede brugere der besøger min side, bliver registreret hvornår hver gang de klikker på noget på siden.

Med følgende script skulle jeg så kunne vise hvem der er online, og hvem der er offline. Jeg har lavet sådan at hvis forskellen mellem den registrede tidspunkt de har klikket på noget, og så tiden lige nu er mere end 5 min, så er man offline.

Mit problem er bare det, at hver gang vi når til en ny måned, bliver alle brugere online, indtil de har besøgt siden 1 gang, så de bliver logget med et nyt tidspunkt. Hvad gør jeg forkert?

<?

$tid = date("d/m/Y H:i:s", (time()-600));
       
include("connect.php");

$result = mysql_query("SELECT * FROM profiler where id = '$traade[5]'");

$profildata = mysql_fetch_array($result);
   
if ($profildata[10] < $tid){               
   
echo "<img src=\"billeder/online.gif\" border=\"0\">";

}

include("connect.php");

$result = mysql_query("SELECT * FROM profiler where id = '$traade[5]'");

$profildata = mysql_fetch_array($result);
   
if ($profildata[10] > $tid){               
   
echo "<img src=\"billeder/offline.gif\" border=\"0\">";

}

?>
Avatar billede tipsen Nybegynder
28. juli 2003 - 19:52 #1
Du laver en sammenligning på datoformatet:

d/m/Y H:i:s

og du bør lave sammenligning på:

Y/m/d H:i:s

fordi

'6/1/2003 12:23:34' > '3/2/2003 12:23:34' > '1/7/2003 12:23:34'

Det er en alfabetisk sammenligning - og derfor gør den ikke hvad du forventer!

Du bør forøvrigt nøjes med en forespørgsel og så bare en if-else struktur til at afgøre om folk er on- eller offline!
Avatar billede h-w.dk Nybegynder
28. juli 2003 - 19:57 #2
Så du vil foreslå dette:

$tid = date("Y/m/d H:i:s", (time()-600));

include("connect.php");

$result = mysql_query("SELECT * FROM profiler where id = '$traade[5]'");

$profildata = mysql_fetch_array($result);

if ($profildata[10] < $tid){               
   
echo "<img src=\"billeder/online.gif\" border=\"0\">";

}
   
if ($profildata[10] > $tid){               
   
echo "<img src=\"billeder/offline.gif\" border=\"0\">";

}
Avatar billede h-w.dk Nybegynder
28. juli 2003 - 20:19 #3
HVis du lige vil smide et svar, så får du point
Avatar billede tipsen Nybegynder
28. juli 2003 - 21:00 #4
Det afhænger helt af, hvordan du har gemt tiden i din tabel - den tid du genererer i php skal selvfølgelig være sammenlignelig med den tid du har gemt i mysql!

Hvis ovenstående rent faktisk fungerer, vil jeg foreslå følgende ændring til det:

$tid = date("Y/m/d H:i:s", (time()-600));
include("connect.php");
$result = mysql_query("SELECT * FROM profiler where id = '$traade[5]'");
$profildata = mysql_fetch_array($result);
if ($profildata[10] < $tid) {
  echo '<img src="billeder/online.gif" border="0">';
} else {
  echo '<img src="billeder/offline.gif" border="0">';
}
Avatar billede h-w.dk Nybegynder
28. juli 2003 - 21:04 #5
Ja, jeg har selvfølgeligt ændret det til det samme, når jeg gemmer tiden!! Helt dum er jeg heller ikke ;-) Så det fungerer nu....takker for hjælpen!!
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