Avatar billede brevkasserne Nybegynder
08. august 2003 - 22:38 Der er 19 kommentarer og
3 løsninger

Tjek om online!

Jeg bruger denne funktion til at tjekke om brugere som er logget er online ved et mysql-kald:

(UNIX_TIMESTAMP(online) > (UNIX_TIMESTAMP() - 120))

De skal altså have rørt på sig i 2 minutter!

Hvordan tjekker jeg det med en php if-sætning, så jeg ved at hive alle brugerne ud kan skrive ud for dem om de er online ller ej.
Cellen online indeholder formatet 0000-00-00 00:00:00
Avatar billede googolplex Novice
08. august 2003 - 22:42 #1
Se den her artikel, der gør han vidst også det du søger.

http://www.udvikleren.dk/article.php?aid=148&techid=6
Avatar billede brevkasserne Nybegynder
08. august 2003 - 22:44 #2
Det er ikke helt det jeg søger. Jeg kan sagtens hive alle de brugere ud som er online ud fra et mysql-kald!

Det jeg gerne vil er at hente ALLE brugere, både online og offline ud og derefter ud fra hver enkelt bruger skrive om de er online eller ej ved hjælp af en if-sætning!
Avatar billede brevkasserne Nybegynder
08. august 2003 - 22:50 #3
Det jeg egentlig søger er dette mysql-kald:

(UNIX_TIMESTAMP(online) > (UNIX_TIMESTAMP() - 120))

lavet om til php, så det kan bruges i en alm. if-sætning...
Avatar billede brevkasserne Nybegynder
08. august 2003 - 22:51 #4
UNIX_TIMESTAMP laver jo min online-celle om til sekunder siden 1970 eller sådan noget.
Det er så hvordan jeg gør det i php?
Avatar billede mnv_dk Praktikant
08. august 2003 - 22:55 #5
$derestid = $logintid + 120 ;
if($logintime < time()){
echo "Så bare kør den i en for lykke!"
}
Avatar billede mnv_dk Praktikant
08. august 2003 - 22:55 #6
There U go ^^
Avatar billede brevkasserne Nybegynder
08. august 2003 - 22:57 #7
Den fungerer ikke helt da $derestid er i formatet 0000-00-00 00:00:00
Avatar billede mnv_dk Praktikant
08. august 2003 - 22:58 #8
Hvorfor er den det.... Hvis den er i en DB, skal du altid bruge unixtimestamp... Men du kan vidst konvertere den til unix timestamp, med mkdate(); se evt. www.dk2.php.net/mkdate
Avatar billede mnv_dk Praktikant
08. august 2003 - 22:59 #9
Min fejl mktime... www.dk2.php.net/mktime
Avatar billede brevkasserne Nybegynder
08. august 2003 - 23:01 #10
Nu har jeg noget ala:

if ((mktime($array_result['online'])) > (mktime() - 120))

men det fungere ikke!
Avatar billede mnv_dk Praktikant
08. august 2003 - 23:03 #11
Prøv evt. at læse det på php.net, for det er ikke sådan du bare laver datoen, der skal flere parametre ind, da den ikke ved hvordan datoen er stillet op...
Avatar billede brevkasserne Nybegynder
08. august 2003 - 23:08 #12
Synes ikke rigtig jeg kan finde nogen løsning! Har læst den igennem med alle indlæggende!
Avatar billede googolplex Novice
08. august 2003 - 23:09 #13
Hvis du fx. har time, minut, sekund, maaned, dag, aar som variabler:

if ((mktime($time, $minut, $sekund, $maaned, $dag, $aar)) > (time() - 120))
Avatar billede googolplex Novice
08. august 2003 - 23:10 #14
Problemet er lidt dit online format, der er sikkert en nem måde at lave det om på, jeg kan desværre ikke huske det.
Avatar billede brevkasserne Nybegynder
08. august 2003 - 23:12 #15
Denne idé ser ud til at virke:

if (strtotime($array_result['online']) > time() - 120) {

men jeg fordeller pointene alligevel!
Avatar billede mnv_dk Praktikant
08. august 2003 - 23:12 #16
Vil nok råde dig til at lave om i dit tids format, det er meget letter med UNIXTIMESTAMP, da du da kan lave den samme tid på 1000 forskellige måder....
Avatar billede mnv_dk Praktikant
08. august 2003 - 23:13 #17
Nå wtf men thx anyway...
Avatar billede googolplex Novice
08. august 2003 - 23:14 #18
Hvis du kan gemme online som int(10) og så bare ligge et almindeligt timestamp lavet med time() så er problemet jo løst.
Avatar billede brevkasserne Nybegynder
08. august 2003 - 23:20 #19
min DB er desværre allerede for stor til at skulle lave datoen om i format!
Men elelrs tak for alle jeres svar :-)
Avatar billede googolplex Novice
08. august 2003 - 23:24 #20
Prøv at lav et spørgsmål her på eksperten angående 'konvertering af UNIX_TIMESTAMP'. Der er garanteret en eller anden der ved hvordan man lige laver det om til et 'almindeligt' timestamp :-)
Avatar billede googolplex Novice
08. august 2003 - 23:31 #21
Løsningen er vist her:

http://www.eksperten.dk/spm/246317

Se Jakoba's svar, der konverterer han tilbage til et almindeligt timestamp ved at kombinere mktime() og substr().
Avatar billede googolplex Novice
08. august 2003 - 23:37 #22
$dato = "0000-00-00 00:00:00";  // Hentet fra mysql

$timestamp = mktime(substr($felt,11,2), substr($felt,14,2), substr($felt,17,2), substr($felt,5,2), substr($felt,8,2), substr($felt,0,4) );

if ($timestamp > (time() - 120)) { ...

Prøv lige 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