Archiv verlassen und diese Seite im Standarddesign anzeigen : addition zeit
Highlandersepp
08.04.2006, 12:37
brauche folgendes und hab null ahnung wie ich das hinbekomme:
in der db befinden sich folgende felder:
username
zeit1
zeit2
zeit3
zeit4
die zeiten sind in folgendem format gespeichert:
zb: 149123, dh : 1 minute, 49 sekunden und 123 tausendstel
in einer abfrage und ausgabe in tabelle sollen nun die 4 zeiten zusammengezählt werden.
eigentlich ja so:
$gesamtzeit = $zeit1+$zeit2+$zeit3+$zeit4;
nur so wird mir das ja nicht im zeitformat zusammengezählt, sondern als normale zahlen.
in einer tabelle mit abfrage zb aus der zeit 1 habe ich in der php folgenden code mit drinne:
$zeit = $zeit1;
$hund = $zeit%1000;
$zeit = (int) $zeit/100;
$sec = $zeit%100;
$zeit = (int) $zeit/100;
$min = $zeit%100;
if($hund<10){$hund="0$hund";}
if($sec<10){$sec="0$sec";}
$zeit1 = $min.":".$sec.":".$hund;
somit erscheint die obige zahl in folgendem format:
1:49:123
welchen code muss ich jetzt noch miteinfügen damit das richtig zusammengerechnet wird ?
StGaensler
08.04.2006, 15:40
Mit diesem Code bekommst du du die Zeit in Millisekunden:$zeit1_ms = $min*60000 + $sec*1000 + $hund;
Diesen Wert kannst du dann problemlos mit den anderen Werten (die du auf identische Weise formatierst) addieren, und dann bekommst du die komplette Zeit in Millisekunden.
Viele Grüße,
Stefan
Highlandersepp
08.04.2006, 17:30
na auf die idee muss man erst mal kommen :p
danke dir :D
Highlandersepp
08.04.2006, 17:47
das erscheint mir jetzt zu kompliziert..........
dann wäre doch einfacher, das ich die zeiten vorab als millisekunden zusammenrechnen lasse( ist ja eh in dem format in der db)
das gesamtergebnis ist dann ja in ms
zb 699321
und wie mache ich da jetzt klar, das man dies in eine zeit von 7 min, 39 sek und 321 ms umrechnet?
so ? :
$zeitgesamt = $min*60000 + $sec*1000 + $hund;
StGaensler
08.04.2006, 18:23
Sind die Millisekunden so wichtig? Wenn nicht, dann verwende die php funktion date() (http://de2.php.net/manual/de/function.date.php).
Wenn die Millisekunden wichtig sind, dann musst du dir afaik selbst eine Funktion schreiben, die das wieder rückgängig macht.
Zuerst teilst du die Zahl durch 60000, rundest ab -> somit hast du deine Minuten.
Dann ziehst du von der ursprünglichen Zahl 60000*Minuten ab, und teilst die Zahl durch 1000, rundest wieder ab -> somit hast du deine Sekunden.
Dann ziehst du von der ursprünglichen Zahl 60000*Minuten + 1000*Sekunden ab, und bekommst deine Millisekunden.
Für mich sind 699321 ms aber 11 Minuten, 39 Sekunden und 123 Millisekunden :)
Viele Grüße,
Stefan
Highlandersepp
08.04.2006, 19:23
oh hilfe, mathe 6 setzen :D
ja die ms sind wichtig.........liegt am game, da werden die ja auch angezeigt und die durchgeknallten user wollen die auch sehen :rolleyes:
Highlandersepp
14.04.2006, 09:54
habe jetzt mal 2 zeitfelder(also als "time") erstellt, diese mit zeiten gefüllt, ne abfrage gemacht, jedoch rechnet der mir nur die minuten zusammen. $gesamtzeit=$testzeit1+$testzeit2;
was muss ich da wie ändern?
StGaensler
15.04.2006, 01:01
Sorry, dein Post lässt mehr Fragen offen, als er beantwortet.
Wie erstellst du die "Zeitfelder"?
Was steht in den Variablen $testzeit1 und $testzeit2 (als Wert) drinnen?
Woraus schließt du, dass nur Minuten zusammengerechnet werden?
Welches Ergebnis bekommst du, welches erwartest du?
Viele Grüße,
Stefan
Highlandersepp
15.04.2006, 07:56
moin du nachteule (siehe die uhrzeit :D )
also die felder erstelle ich in der datenbank, definiert als time.
die dort gespeicherten werte liegen in folgendem format vor:
12:44:36
woraus ich schliesse , das nur minuten berechnet werden? na weil bei der ausgabe nur die addition der minuten erscheinen :p
und ich erwarte eine addition aller werte, also auch der sek und hs
hier mal die bereits geänderte php:
$rang = 0;
$abfrage = $db->query_read("SELECT
`username`,
`gesamtzeit`,
`testzeit1` + `testzeit2` AS `gesamtzeit`
FROM
`sc1_orf`
ORDER BY
`gesamtzeit` DESC");
$ergebnis = $db->num_rows($abfrage);
while ($row = $db->fetch_array($abfrage)) {
if ($row['username']) $si++;
$ewigrang++;
$username = $row['username'];
$gesamtzeit = $row['gesamtzeit'];
$testzeit1 = $row['testzeit1'];
$testzeit2 = $row['testzeit2'];
$ergebnis = $db->query_write("UPDATE sc1_orf SET gesamtzeit='$gesamtzeit' WHERE username='" . $db->escape_string($username) ."' ");
nur hab ich jetzt das problem das die sek bis 100 berechnet werden statt bis 60.........und nun ?
StGaensler
23.04.2006, 08:12
Wenn die Werte so vorliegen, wie du schreibst, dann ist das ein String und keine Zahl, somit kannst du sie auch nicht addieren. Du musst den String in eine Zahl umwandeln (die schon angesprochenen Sekunden), und dann kannst du sie addieren. Deine Zeile müsste dann so aussehen:$gesamtzeit = date('H:m:s',(strtotime($testzeit1)+strtotime($testzeit2));
Viele Grüße,
Stefan
vBulletin® v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.