Hallo zusammen.
Ich habe eine Datenbank mit zwei Spalten, in der ersten den mySQL Timestamp für login eines Users und in der zweiten den Timestamp für die Abmeldung. Jetzt möchte ich gerne berechnen wie viel Zeit dazwischen vergangen ist und dieses als Liste in Sekunden ausgeben.
Ich habe hier schon mal was programmiert, doch es erscheit immer nur 0 sec.
Vielleicht seht Ihr den Fehler in meinem Script, ich habe schon alles zig mal umgestellt und auseinander gebastel, doch ich finde den Fehler nicht.
Die eintelnen Werte zieht er sich schon richtig aus der DB, nur beim Umrechnen mit mktime() scheint was falsch zu laufen.
<?
include("config.inc");
$res1 = mysql_query("SELECT * FROM timescale");
?>
--- HTML Kopf usw.----
<?
while ($cur = mysql_fetch_array($res1)){
// Die ersten Timestamps hat er mir nicht richtig gesetzt
// Anstatt 01062002 hat er nur 1062002 geschrieben deshalb die IF-Abfragen.
$t1 = $cur['time1'];
if (strlen($t1) < 14){ $t1 = "0".$t1;}
$t2 = $cur['time2'];
if (strlen($t2) < 14){ $t2 = "0".$t2;}
$a1 = substr($t1,8,2);
$a2 = substr($t1,10,2);
$a3 = substr($t1,12,2);
$a4 = substr($t1,2,2);
$a5 = substr($t1,0,2);
$a6 = substr($t1,4,4);
$b1 = substr($t2,8,2);
$b2 = substr($t2,10,2);
$b3 = substr($t2,12,2);
$b4 = substr($t2,2,2);
$b5 = substr($t2,0,2);
$b6 = substr($t2,4,4);
$nt1 = mktime($a1,$a2,$a3,$a4,$a5,$a6);
$nt2 = mktime($b1,$b2,$b3,$b4,$b5,$b6);
print $nt2." - ".$nt1. " = ".$nt2-$nt1." sec.<br>";
Warum will das nicht???
Ich glaube beim Auslesen mit subst(9 gekt was kaput, aber die Reihenfolge habe ich mehrmals überprüft.
Habe auch mal die Werte $a1 bis $a6 manuell eingegeben, dann spuckt er den richtigen Timestamp aus. Eber es macht auch einen Unterschied ob ich
$a1 = 06; oder $a1 = "06"; angebe.
Woran liegt das, muss ich die Werte in einen echten Integer umwandeln und wenn wie?
Please Help...
Verzweifelte Grüße,
Andi
Ich habe eine Datenbank mit zwei Spalten, in der ersten den mySQL Timestamp für login eines Users und in der zweiten den Timestamp für die Abmeldung. Jetzt möchte ich gerne berechnen wie viel Zeit dazwischen vergangen ist und dieses als Liste in Sekunden ausgeben.
Ich habe hier schon mal was programmiert, doch es erscheit immer nur 0 sec.
Vielleicht seht Ihr den Fehler in meinem Script, ich habe schon alles zig mal umgestellt und auseinander gebastel, doch ich finde den Fehler nicht.
Die eintelnen Werte zieht er sich schon richtig aus der DB, nur beim Umrechnen mit mktime() scheint was falsch zu laufen.
<?
include("config.inc");
$res1 = mysql_query("SELECT * FROM timescale");
?>
--- HTML Kopf usw.----
<?
while ($cur = mysql_fetch_array($res1)){
// Die ersten Timestamps hat er mir nicht richtig gesetzt
// Anstatt 01062002 hat er nur 1062002 geschrieben deshalb die IF-Abfragen.
$t1 = $cur['time1'];
if (strlen($t1) < 14){ $t1 = "0".$t1;}
$t2 = $cur['time2'];
if (strlen($t2) < 14){ $t2 = "0".$t2;}
$a1 = substr($t1,8,2);
$a2 = substr($t1,10,2);
$a3 = substr($t1,12,2);
$a4 = substr($t1,2,2);
$a5 = substr($t1,0,2);
$a6 = substr($t1,4,4);
$b1 = substr($t2,8,2);
$b2 = substr($t2,10,2);
$b3 = substr($t2,12,2);
$b4 = substr($t2,2,2);
$b5 = substr($t2,0,2);
$b6 = substr($t2,4,4);
$nt1 = mktime($a1,$a2,$a3,$a4,$a5,$a6);
$nt2 = mktime($b1,$b2,$b3,$b4,$b5,$b6);
print $nt2." - ".$nt1. " = ".$nt2-$nt1." sec.<br>";
Warum will das nicht???
Ich glaube beim Auslesen mit subst(9 gekt was kaput, aber die Reihenfolge habe ich mehrmals überprüft.
Habe auch mal die Werte $a1 bis $a6 manuell eingegeben, dann spuckt er den richtigen Timestamp aus. Eber es macht auch einen Unterschied ob ich
$a1 = 06; oder $a1 = "06"; angebe.
Woran liegt das, muss ich die Werte in einen echten Integer umwandeln und wenn wie?
Please Help...
Verzweifelte Grüße,
Andi
Kommentar