winhasser
Goto Top

PHP Zeit

Hi,

ich hab gerade ein Problem. Ich will bei PHP mit Zeit rechnen und es dann in eine MySQL Tabelle speichern. Zum Beispiel aktulle Datum + 5 Tage. Das mach ich gerade so:

$date1 = date("y-");
$date2 = date("m-");
$date3 = date("d")+ $row['dauer'];
$date4 = date(" H:i:s");

$date = $date1 . $date2 . $date3 . $date4;

$sql = "INSERT INTO
work
SET
username = '".$user['ID']."',
name = '" . $_GET['mission'] . "',
bis = '" . $date . "'";

mysql_query($sql) OR die(mysql_error());

Das Problem ist das wenn ich den 28. habe und das + 5 rechne kommt 32 raus. Den Tag gibt es aber logischer Weise nicht, also schreibt php in die Tabelle 0000-00-00. Wie macht man das eigendlich ich hab nix gefunden!!! Bin in PHP noch nich der PRO!!!

Danke im vorraus!!!

Content-ID: 29039

Url: https://administrator.de/contentid/29039

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

Schrottie
Schrottie 27.03.2006 um 11:23:59 Uhr
Goto Top
Moin.

mach es doch wie folgt:

$time = mktime()+(60*60*24*5); // Timestap von UNIX + (Sec*Min*Std*Tage)
$datum = date("d.m.Y");

Damit hast du kein Problem bei Monats oder Jahreswechsel. Habe leider grade nicht die Möglichkeit zu testen ob es so richtig ist. Müsste aber. Ansonsten schau dich mal hier um:

http://www.php.net/manual/de/function.mktime.php
WinHasser
WinHasser 27.03.2006 um 11:47:38 Uhr
Goto Top
Danke für die schnelle Hilfe!!! Hab in der Tabelle den Typ der Spalte "bis" auf INT gesetzt und den Quelltext so geändert:

$date = mktime() + ($row['dauer']*60*60*24);

$sql = "INSERT INTO
work
SET
username = '".$user['ID']."',
name = '" . $_GET['mission'] . "',
bis = '" . $date . "'";

mysql_query($sql) OR die(mysql_error());
25768
25768 29.03.2006 um 16:14:04 Uhr
Goto Top
Hallo,

wenn ich ein Datumsfeld in einem Integerfeld speichern muss ist da irgendetwas falsch.

MySQL hat genügend (und meiner Meinung nach bessere) Zeitfunktionen als PHP.

Ich empfehle dir mal einen Blick in die Dokumentation :
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

Besonders DATE_ADD() sollte dir dann gefallen.

Gruß
Andi
Schrottie
Schrottie 29.03.2006 um 16:30:24 Uhr
Goto Top
Ich nehme immer varchar mit 10 Zeichen dd-mm-yyyy
25768
25768 29.03.2006 um 18:24:20 Uhr
Goto Top
Hallo,

naja Schrottie, lol ?
Abgesehen davon, das da CHAR(10) sinvoller wäre als VARCHAR(10)

Für was gibt es in MySQL Datentypen wie:
- DATE
- DATETIME
- YEAR
- TIME
- TIMESTAMP
?
Zwiebelkopf
Zwiebelkopf 08.04.2006 um 17:08:04 Uhr
Goto Top
Tach möcht mich hier mal mit einmischen wenns erlaubt is

Und zwar wie siht das dann mit DATETIME aus wenn ich da ein paar minuten draufsetzten will?

bis jetzt siehts so aus aber da kommt nur mist raus

$now2 = date("Y-m-d H:i:s");
$dauer = $now2 + date("H:15:s");
Schrottie
Schrottie 08.04.2006 um 17:36:12 Uhr
Goto Top
$time = mktime(); // Schreibt den Timestap in die Variable
$now = date("Y-m-d H:i:s", $time); // Gibt die Aktuellen Werte aus: 2006-04-08 17:34:18   

$time +=15*60; // Fügt 15 Min. hinzu
$now = date("Y-m-d H:i:s", $time); // Schreibt die neue Zeit: 2006-04-08 17:49:18    
WinHasser
WinHasser 08.04.2006 um 21:45:36 Uhr
Goto Top
Das ist müll face-smile

Du musst es wenn dann so wie ich es am Anfang gemacht habe:

$date1 = date("y-");
$date2 = date("m-");
$date3 = date("d")+ $row['dauer'];
$date4 = date(" H:i:s");

$date = $date1 . $date2 . $date3 . $date4;

Aber das ist Müll weil du da das Problem hast das du Zeiten bekommst die es gar nicht gibt! Wie z.b den 32.13.2006 oder 25:64 Uhr.
Schrottie
Schrottie 08.04.2006 um 22:29:58 Uhr
Goto Top
WinHasser was ist Müll?

kann dir leider nicht ganz folgen
25768
25768 09.04.2006 um 17:14:00 Uhr
Goto Top
Hi,

eine Liste findest du auf :
http://dev.mysql.com/doc/refman/4.0/de/date-and-time-functions.html

also dann in deinem Bsp

$sql_update = "UPDATE tbl SET time = DATE_ADD(time, INTERVAL xbeliebige MINUTE) WHERE id = $richtige_id";

Gruß
Andi