[PHP] probleem met online tijd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

ik ben bezig om voor mijn site een scriptje te schrijven om te kijken of een user online is.

Hij laat al heel mooi zien dat ie online is alleen ik wil ook de tijd erbij, hoe lang ie dus al online is.

Ik sla de datum wanneer ie online is gekomen op als unix tijd. Dus om te kijken hoe lang ie is ingelogd doe ik time() - $row->time. Dit werkt ook goed alleen hij zet er standaad dit neer in principe: 1-1-1970 1-0-0. Dus er staat altijd 1 uur. Terwijl dat niet e bedoeling is. Hoe kan ik hier gewoon 0 krijgen?

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 21-09 14:53

MueR

Admin Tweakers Discord

is niet lief

erhm.. time is in seconden. Het is toch niet zo moeilijk om die seconden om te zetten in minuten/uren?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
als ik dit doe:

date("h:i:s", $idletime);

Dan krijg ik nog steeds: 1:12:23 bijvoorbeeld, terwijl het echt geen uur is.

Acties:
  • 0 Henk 'm!

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 30-04 10:28

JeRa

Authentic

Wat bedoel je met 'hij zet er standaard dit neer in principe: 1-1-1970 1-0-0'? :?

Ik snap niet wat de Unix Epoch te maken heeft met het opvragen van de tijd dat een gebruiker idle is.

ifconfig eth0 down


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mja dat is in principe nutteloze informatie kom ik nu achter. Alleen hij moet dus het aantal seconde omzetten in uren-minuten-seconden.

van bijvoorbeeld 535 maakt ie: 01:08:55

Acties:
  • 0 Henk 'm!

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 20:47
Logisch, want je probeert er een DATUM-weergave van te maken, je toont echter alleen het uur/minuut/seconde gedeelte ervan. Seconden omrekenen naar minuten is gewoon delen door 60 toch? En wat verder goochelen met modulus om het in uren/minuten/sec formaat te krijgen.

[ Voor 19% gewijzigd door dajappie op 11-10-2005 22:31 ]


Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 01:42

remco_k

een cassettebandje was genoeg

Verwijderd schreef op dinsdag 11 oktober 2005 @ 21:23:
Hallo,

ik ben bezig om voor mijn site een scriptje te schrijven om te kijken of een user online is.

Hij laat al heel mooi zien dat ie online is alleen ik wil ook de tijd erbij, hoe lang ie dus al online is.

Ik sla de datum wanneer ie online is gekomen op als unix tijd. Dus om te kijken hoe lang ie is ingelogd doe ik time() - $row->time. Dit werkt ook goed alleen hij zet er standaad dit neer in principe: 1-1-1970 1-0-0. Dus er staat altijd 1 uur. Terwijl dat niet e bedoeling is. Hoe kan ik hier gewoon 0 krijgen?

Alvast bedankt.
Ik ben niet into php, maar liep per ongeluk tegen dit topic aan, wellicht zeg ik dus hele domme dingen.

Uit de time() functie komt een integer, zorg ervoor dat je $row->time ook een int is.
Als je dan time() - $row->time doet, dan krijg je het aantal seconden dat de gebruiker online is als resultaat.
voorbeeld:
PHP:
1
int online_time=time() - $row->time; //resultaat is de online tijd in seconden.

Nu moet je alleen nog een stukje code maken om het aantal seconden om te rekenen naar uren/min/sec.
@ hierboven: waar heb jij op school gezeten...? 8)7 Ja, seconden kan je delen door 60 en je hebt het aantal minuten.
@ hieronder: het lijkt me inderdaad het beste als de TS zelf een omrekening maakt van seconden naar uren/min/sec

[ Voor 7% gewijzigd door remco_k op 11-10-2005 22:49 . Reden: UBB stupide typo ]

Alles kan stuk.


Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Aangezien ik het antwoord van dajappie in eerste instantie niet begreep (maar hij heeft wel gelijk ;)): de unix timestamp geeft de verlopen tijd sinds 1-1-1970 om 00:00:00 (dat laatste afhankelijk van de ingestelde tijdzone) weer. Timestamp 535 is dus 1-1-970 om 01:08:55 (in deze tijdzone). Jij vraagt met de functie date() om dat laatste deel weer te geven. Je moet dus de tijdzone corrigeren of het niet via deze weg proberen.

Als iemand meer dan een dag online is zal je ook 1 van de dagtelling af moeten trekken. Het komt niet heel netjes op me over, maar misschien kan het niet anders, tenzij je zelf omreken en weergave functies gaat schrijven?

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok het is me gelukt,

ik reken nu eerst het aantal secondes om naar uren, dan wat over is naar minuten en dan wat over is naar seconden.

BEst wel stom, maar iig bedankt :)

Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 01:42

remco_k

een cassettebandje was genoeg

Verwijderd schreef op dinsdag 11 oktober 2005 @ 22:51:
Ok het is me gelukt,

ik reken nu eerst het aantal secondes om naar uren, dan wat over is naar minuten en dan wat over is naar seconden.

BEst wel stom, maar iig bedankt :)
Ja, zoo makkelijk kom je er niet vanaf Sjef! Wat deed je fout? :+

Alles kan stuk.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou ik wilde het aantal seconde omzetten naar gewone tijd met date(). Alleen dat is dus voor datum.

Dus reken ik het aan secondes gewoon om.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
kun je niet in je query al NOW() - "tijd" opvragen?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1