Portal > Foren > PHP > PHP-Programmierung > Datum in DB und wieder raus
Antwort
 
Themen-Optionen
Alt 20.10.2006, 18:50 Nach oben    #1
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 483
Standard Datum in DB und wieder raus

Hallo,

ich habe wieder angefangen selbstständig mit PHP zu programmieren.
Jetzt hab ich leider ein Problem, und der Code leidet auch sehr darunter.
Folgendes Problem.

Ich möchte einen Termin in der DB speichern.
Daten:
indate (Zeit als der Beitrag erstellt wurde)
uid (User ID des Verfassers)
outdate (Zeit des Termins)
message (Der Text der angezeigt werden soll)
ip (IP-Adresse des Users)

Wie bekomm ich jetzt die Zeit in die Tabelle? Welches Format müssen die Zeilen haben?

Wichtig ist, das die Zeit beim ausgeben wieder in zwei verschiedenen Spalten angezeigt werden soll. Einmal das Datum, und einmal die Uhrzeit.

Wäre sehr nett, wenn mir einer einfach mal kurz den Code geben könnte.
Ich verzweifel nur grad, und wollte eigentlich noch weiter machen .......

Jan
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.10.2006, 20:48 Nach oben    #3
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Ich finde es extrem nervig, wenn Daten (Mehrzahl von Datum) in einer bestimmten Art und Weise in der DB landen.
Unixtimestamp und der Rest wird über die Applikation angepasst, so muss man bei Mehrsprachigkeiten z.b. nicht dauernd rechnen und tun, sondern kann schön von einer universellen Basis sich das zurechtmachen und beliebig darstellen.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.10.2006, 09:17 Nach oben    #4
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 483
Standard

Ja, Unixtimestamp ist sicherlich gut,

aber wie bekomm ich den zusammen, wenn ich ein Formular hab, wo man den Tag, den Monat, das Jahr, die Stunde und die Minuten aus einer Selectliste auswählt?

Wie kann ich dann aus diesen Werten einen Timestamp erzeugen?
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.10.2006, 10:39 Nach oben    #5
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 78
Standard

das kannst du mit mktime machen.
Creativ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.10.2006, 11:30 Nach oben    #6
n00b -.-
 
Benutzerbild von Bookworm
 
Registriert seit: 10.11.2005
Beiträge: 318
Standard

Jopp...

In etwa so dann, ne?

PHP-Code:
<?

//Der Anfangskram

$tag = $_POST['tag'];
$monat = $_POST['monat'];
$jahr = $_POST['jahr'];

$timestamp = mktime(0, 0, 0, $monat, $tag, $jahr)

//Hier eben der Rest des Codes

?>
__________________
Alle wollen doch nur mein Bestes. Aber sie werden es nicht kriegen!
Bookworm ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.10.2006, 13:06 Nach oben    #7
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Zitat:
Zitat von WarrenFaith Beitrag anzeigen
Ich finde es extrem nervig, wenn Daten (Mehrzahl von Datum) in einer bestimmten Art und Weise in der DB landen.
Unixtimestamp und der Rest wird über die Applikation angepasst, so muss man bei Mehrsprachigkeiten z.b. nicht dauernd rechnen und tun, sondern kann schön von einer universellen Basis sich das zurechtmachen und beliebig darstellen.
Irgendeine Art und Weise brauchst du eben. Die Rechnerei hat aber weder was mit Mehrsprachigkeit (sondern mit Localisation - die Mehrspachigkeit betrifft ja nur die Dartellung), noch mit dem Datenformat (du musst die Stunden ja eh draufpacken oder abziehen - ganz gleich, wie diese gespeichert wurden - wichtig hier nur, eine gemeinsame Basis, also in der Regel die UTC zu definieren) zu tun.

Es spricht erstmal nichts dagegen, die Zeitpunkte als Feld "DATE" oder "DATETIME" anzulegen. Der Vorteil ist, dass du so über die ganze Palette der MySQL(/...) - Zeit- und Datumsfunktionen zugreifen kannst. Wie du das Datum dann in der PHP-Awendung abbildest ist letztlich Wursch - am besten natürlich in einem entsprechenden Datatype-Objekt, ds nach auße ohnehin nicht preisgit, wie die Werte intern gespeichert werden.

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.10.2006, 08:16 Nach oben    #8
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Sicherlich ist zum Rechnen der Unix-Timestamp die bessere Wahl der Speicherung, jedoch sollte man bedenken, dass der Unix-Timestamp etwas unübersichtlich ist, wenn man selber in der Datenbank direkt mal ab und zu unterwegs ist. Schließlich muss man immer rechnen, bevor man sieht, welches Datum sich hinter dem Unix-Timestamp befindet und ich nehme niemandem ab, dass er auf den ersten Blick sieht, welches Datum da denn nun steht.

Abgesehen davon finde ich es auch deutlich schöner, das Datum über den Query zu formatieren, als hinterher noch extra wieder PHP-Code dafür verwenden zu müssen.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.10.2006, 13:34 Nach oben    #9
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 483
Standard

So, jetzt hab ich das Problem gelöst.
Das Datum wird als Unixtimestamp gespeichert.
Ich gebe jetzt das Datum im Format "d.m.Y" in einem Textfeld aus.
Jetzt möchte ich, das man das Datum ändert, und dann beim Absenden das Datum (zBsp: 25.11.2006 ) wieder als Timestamp in die Datenbank kommt.
Wie bekomm ich das hin?

Zitat:
Ferien
Ferien Erster Ferientag Unterrichtsbeginn
Herbst 26.11.2006 05.12.2006
PHP-Code:
$query $db->query("UPDATE page_ferien SET start = '".$start."', SET ende =  '".$ende."' WHERE name = 'Herbst')"); 
Zweite Sache ist, das ich das ganze für 6 Ferien brauch, also das beim senden möglichst alle 6 Datensätze geändert werden sollen. Geht das irgendwie?
Also die Sommerferien sich ändern, die Herbstferien und so weiter.
Jeweils mit dem datum das in dem textarea eingegeben wurde.
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.10.2006, 13:37 Nach oben    #10
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

http://us2.php.net/function.mktime
Zitat:
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )
Ich hab das ebenfalls mit Unix-Timestamps in der DB gelöst .. Der Administrator des Scripts kann dann auswählen, wie das Datum formatiert werden soll, dies wird dann ausgelesen, und in die Funktion date() geschrieben..
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.10.2006, 13:39 Nach oben    #11
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 483
Standard

Ich habe das Problem, das das Datum im Format 11.05.2003 vorliegt.
Wie kann ich das den mit mktime verwenden?
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.10.2006, 13:47 Nach oben    #12
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Du wendest explode() oder preg_split() auf deinen String an, und übergibst dann die Parameter an mktime()
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.10.2006, 14:03 Nach oben    #13
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 483
Standard

hehe,

ist mir auch eingefallen, habs aber erst getestet, und dann hattest du schon geantwortet. Trotzdem danke.

Es werden wahrscheinlich noch mehr fragen kommen
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.10.2006, 16:15 Nach oben    #14
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Um das Array für mktime() zu erhalten, bietet sich strptime() an. Da musst du nur das Format angeben, den Eingabe-String übergeben und erhältst eben ein Array mit Jahr, Monat, etc.

Beispiel z.B. von "pwadas at gazeta dot pl" auf php.net/strptime

Und, wenn du die Vorteile, Zeiten in MySQL in DATETIME zu halen und in PHP mit dem Timestamp zu handeln, dann kannst du den Timestamp aus einem DATETIME-Feld auch einfach mit der MySQL-Funktion UNIX_TIMESTAMP() auslesen:

http://dev.mysql.com/doc/refman/5.0/...functions.html

Auch interessant vielleicht der Artikel in der dclp-faq:
http://php-faq.de/q/q-datum-mysql.html

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] Zeitformate, Datum und Co Jann Hendrik Tutorials 0 05.12.2006 18:48
Eigenes Datum Maybe PHP-Programmierung 8 19.02.2006 18:59
Deutsches Datum in englisches Umwandeln la-finest PHP-Programmierung 16 03.02.2006 12:15
Datum Anzeigen / Speichern doria PHP-Programmierung 27 02.12.2005 12:00
Datum von morgen ermitteln Lautsprecher Allgemeine Java-Programmierung 2 08.11.2005 15:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:12 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44