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-Key: 29039

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

Printed on: April 19, 2024 at 06:04 o'clock

Member: Schrottie
Schrottie Mar 27, 2006 at 09:23:59 (UTC)
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
Member: WinHasser
WinHasser Mar 27, 2006 at 09:47:38 (UTC)
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());
Mitglied: 25768
25768 Mar 29, 2006 at 14:14:04 (UTC)
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
Member: Schrottie
Schrottie Mar 29, 2006 at 14:30:24 (UTC)
Goto Top
Ich nehme immer varchar mit 10 Zeichen dd-mm-yyyy
Mitglied: 25768
25768 Mar 29, 2006 at 16:24:20 (UTC)
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
?
Member: Zwiebelkopf
Zwiebelkopf Apr 08, 2006 at 15:08:04 (UTC)
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");
Member: Schrottie
Schrottie Apr 08, 2006 at 15:36:12 (UTC)
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    
Member: WinHasser
WinHasser Apr 08, 2006 at 19:45:36 (UTC)
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.
Member: Schrottie
Schrottie Apr 08, 2006 at 20:29:58 (UTC)
Goto Top
WinHasser was ist Müll?

kann dir leider nicht ganz folgen
Mitglied: 25768
25768 Apr 09, 2006 at 15:14:00 (UTC)
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