Avatar billede flol Nybegynder
12. april 2007 - 17:25 Der er 5 kommentarer og
1 løsning

Online brugere system slår fejl

hej.
koden først:

-----------kode--------------

$maxtime = time() -6000;
mysql_query("UPDATE brugere SET online = 'nej', activ = '' WHERE UNIX_TIMESTAMP(activ) < '$maxtime'") or die(mysql_error());

if($_SESSION['level'] == 'normal' OR $_SESSION['level'] == 'admin') {
    mysql_query("UPDATE brugere SET activ=NOW() online='ja'");
}

---------------/kode---------------

Ja jeg har jo prøvet mig lidt frem med et online system, som skulle visse hvilke brugere der er online på min side men den virker ikke så godt :/

koden ovenfor er så det, kode jeg har på hver side på mit site.
kan i måske hjælpe mig med at forbedre den?
indtil videre gider den slet ingen ting, hvordan kan det være?
Avatar billede intenz Novice
12. april 2007 - 18:08 #1
Jeg ville nok vælge at bruge time() konsekvent i stedet for den blanding af time() og NOW() du har nu. Og så evt. bruge online='0' når brugeren ikke er online og '1' når de er online. I stedet for 'nej' og 'ja', men det er mere en smagssag.

Derudover har du et par fejl.
Her: UNIX_TIMESTAMP(activ) < '$maxtime' (ugyldig kommando i where)
Og her: activ=NOW() online='ja' (mangler et komma)

En rettelse kunne se sådan ud:

$time = time();
$maxtime = $time-6000;
mysql_query("UPDATE brugere SET online = 'nej' WHERE activ < '$maxtime'") or die(mysql_error());

if($_SESSION['level'] == 'normal' OR $_SESSION['level'] == 'admin') {
    mysql_query("UPDATE brugere SET activ=NOW(), online='ja'");
// Der mangler en form for WHERE på ovenstående query, som den ser ud nu opdaterer den ALLE brugere i tabellen. Jeg kan ikke se ud fra din kode hvad den WHERE skal indeholde.
}
Avatar billede jakobdo Ekspert
12. april 2007 - 18:55 #2
intenz: Hvis vi snakker samme server, så burde time() og NOW() give samme tid.
Dog giver NOW() i "læseligt" format, og TIME() i UNIXTIMESTAMP.
Avatar billede flol Nybegynder
12. april 2007 - 19:24 #3
åhh tak intenz ! ;D

nu virker det fint..!
dine point er velfortjent! :D
Avatar billede intenz Novice
13. april 2007 - 10:25 #4
jakobdo: Enig. Men vil stadig kun vælge et benytte enten det ene eller det andet i scriptet. I stedet for en kombination :)
Avatar billede jakobdo Ekspert
13. april 2007 - 10:38 #5
Jeg ville altid bruge NOW()
Avatar billede intenz Novice
15. april 2007 - 22:38 #6
Jeg ville bruge time() ;)
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