Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : mit Timestap und PHP arbeiten



Redbo
03-03-2003, 08:36
Guten Morgen allerseits!


Ich bitte Hilfe bei folgendem Problem, bei dem ich nicht so recht weiter komme!


Also ich möchte einen Artikel aus der Datenbank auslesen.
Dann möchte ich sehen wie lange der Artikel schon außer Haus ist.
Dann kann der Artikel aber wieder als vorhanden markiert werden.


Nun habe ich mit TIMESTAP (8) einen "Zeitstempel" generieren lassen, wenn der Artikel beispielsweise außer Haus geht.

Ich habe aber zwei Timestap (Ausgabe und wiederankunft des Artikels)!

1. ) Es werden aber immer beide gleich sofort ausgefüllt auch wenn der Artikel gerade mal ausgeliehen wurde! Ich möchte aber separat für jeden Vorgang ein Datum eintragen lassen!

2.) Ich möchte dann eine Statistik machen lassen, wie lange (also wieviele Tage) der Artikel insgesamt außer Haus war. Geht das so einfach mit Timestap ?


Ich hoffe ihr könnt mir helfen!

MFG Thomas

mehlvogel
03-03-2003, 09:08
1.) beim Eintragen in die Datenbank setz den zweiten Stempel einfach gleich 0. Eintragen kannst du ihn später mit der mySQL Funktion NOW(). Also:

Artikel wird ausgeliehen:



INSERT INTO tabelle SET timestamp_feld_ausgeliehen='NOW()', timestamp_feld_zurück='0'


Beim Zurückbringen:



UPDATE tabelle SET timestamp_feld_zurück='NOW()' WHERE id='[Wert]'


Zu 2.) Das weis ich net genau. Ich würde die Insgesamt empfehlen mit den UNIX timestamps zu arbeiten. Dazu muss das Tabellen Feld INT (ich glaube 14 oder 15 sein). Damit lässt sich dann ganz Komfortabel rechnen über die Funktionen time, mktime, date, etc... Da musste mal bei php.net schauen. Bei den unixtimestamps kannst du einfach zwei voneinander abziehen und erhälst die Zeit in Sekunden die zwischend en Timestamps liegt, was man dann sehr komfortabel umrechnen kann.

Willst du bei diesem Format bleiben, denk ich, musst du die strings die du bei der Abfrage kriegst zerlegen und dann einzelne Differenzen bilden, was u.U. sehr Aufwendig ist (zu programmieren).

Redbo
03-03-2003, 15:41
ich danke dir für den Code. Hab mir das angeschaut eingefügt und gut laufen "tut" es auch!!!!!

Aber jetzt meine Frage wenn ich einen Timestamp habe zB.
20030303 -> heute

da müsste ich doch diesen Wert zerstückeln um das aktuelle Datum -> also für den User anzeigen zulassen ?

Müsste ich da die ersten 4 Werte des Strings zählen lassen ?!!?

Oder wie könnte man das eventuell einfacher lösen !?!?!?


MFG Redbo

Gaert
03-03-2003, 15:53
Hallo!

Einfacher geht es wie Mehlvogel schon gesagt hat mit dem Unix Timestamp.
Der Unix Timestamp enthält die verstrichenen Sekunden seit dem 01.01.1970
und wird in einem INT(14) Feld gespeichert.
Dadurch dass der Timestamp ein inkrementeller Wert ist, kann man mit im auch addieren und subtrahieren, und so einfach Zeiträume berechnen:
Bsp: $sekunden_dazwischen = $neuer_ts - $alter_ts;

Der Unix Timestamp lässt sich mit der date() Funktion von PHP hervorragend formatieren, daher eignet er sich auch hervorragend zum Ausgeben an den Browser.

Gruß

Gaert

Redbo
03-03-2003, 16:11
aha! danke euch!



Also werd mich mal einlesen .... habe zwar schon vorab einiges in Erfahrung gebracht aber leider noch nicht so!



*dankendeverneigung* :D

MFG Redbo