| Formular: Datum & Zeit umwandeln |
hmader
Feiertags-Poster
Beiträge: 30
|
Hi Leute,
stehe jetzt vor folgendem Problem: Ich habe ein PHP-Formular, das mit dem Abschicken die Daten in eine MySQL-Datenbank schreibt. Das funktioniert auch alles wunderbar.
Allerdings gibt es ein Feld "Datum" und zwei Felder "Zeit". In der Datenbank im Format YYYY-MM-DD und HH:MM:SS gespeichert. Wie muß ich am Formular herummurksen, damit mir falsch eingegebene Daten und Zeiten (z. B. D.M.YY und HH.MM) richtig gespeichert werden?
lg, Herwig
Diese Nachricht wurde geändert von: hmader |
|  Profil
E-Mail
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795
|
Pfff, zeig mal den Code. Da müsstest du mit Reguläern Ausdrücken überprüfen, wierum das Datum eingegeben wurde und es dementsprechend speichern.
---
Take a look here!
Lichtblick - Einblick - Ausblick
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
hmader
Feiertags-Poster
Beiträge: 30
|
Was genau brauchst du, nur das Formular oder auch was aus der Datenbank?
In der Praxis geht's - schätze ich - eher um folgende Eingabeformen:
T.M.JJ, T.MM.JJ, TT.MM.JJJJ => JJJJ.MM.TT
H.MM oder HH.MM => HH.MM.SS
Diese Nachricht wurde geändert von: hmader |
|  Profil
E-Mail
Editieren
Zitieren
|
Omega2k
Otto-Normal-Poster
Beiträge: 55
|
Warum verwendet denn keine die TIMESTAMP? Für was hat man die wohl einfegührt...?
Beispiele:
--------> ab in die DB
<------ aus der DB
1:
2:
3:
4: |
$datum=date("d.m.Y",$timestamp); ### Format: DD.MM.JJJJJ
$uhrzeit=date("H:i:s",$timestamp); ### Format: HH:MM:SS
|
Falls man ein spezielles Datum als TIMESTAMP braucht, kein Problem:
1:
2:
3:
4:
5:
6: | $timestamp2=mktime(intval($stunden),
intval($minuten),
intval($sekunden),
intval($monat),
intval($tag),
intval($jahr)); |
und da lässt sich schnell checken, ob was sinnvolles rauskommt...
---

@ http://www.omega2k.de
Diese Nachricht wurde geändert von: Omega2k |
|  Profil
Website
Editieren
Zitieren
|
hmader
Feiertags-Poster
Beiträge: 30
|
öh, ich bin jetzt mit der Timestamp-Funktion nicht ganz so vertraut - nur: Wie löse ich damit das Grundproblem - nämlich dass ein X-beliebiges in der Zukunft liegendes Datum anders eigegeben wird als es in der Datenbank gespeichert wird?
|
|  Profil
E-Mail
Editieren
Zitieren
|
Omega2k
Otto-Normal-Poster
Beiträge: 55
|
also zum verständnis:
$timestamp=mktime(
intval($stunden),
intval($minuten),
intval($sekunden),
intval($monat),
intval($tag),
intval($jahr));
Der function "mktime" ist es egal, was du eingibst... ob in der Zukunft oder in der Vergangenheit. Wenn Du checken willst, ob es in der Zukunft oder Vergangenheit liegt, hilft "time()" - die timestamp von JETZT.
1:
2: | if (time()>$timestamp) $vergangenheit=true;
else $zukunft=true; |
Siehe: http://de2.php.net/manual/de/function.mktime.php
auch wenn z.B. als Stunden = 40 gesetzt ist, das ist dem egal... es gibt keine falsche zeit bei TimeStamp... das ist IMMER die Anzahl der Sekunden zwischen der UNIX Epoche (January 1 1970) und der angegebenen Zeit! Damit lässt sich genialst rechnen... was ist denn genau Dein Problem?
---

@ http://www.omega2k.de
|
|  Profil
Website
Editieren
Zitieren
|
hmader
Feiertags-Poster
Beiträge: 30
|
Mein Problem ist folgendes: Ich habe ein Formular in PHP, in der man ein Datum und zwei Zeiten eingeben kann - ganz normal in Textfelder. Das wird dann in eine MySQL-Datenbank eingespeichert. Dort liegt die Zeit in der Form 12:34:00 vor. Wenn jetzt jemand aber "12.34" eingibt, wird ein falscher Wert in der Datenbank eingespeichert. Wie mache ich das am einfachsten, damit mir falsche Werte in richtige umgewandelt werden?
(Mir kommt während dem Schreiben eine Idee... Je ein Feld für Tag, Monat, Jahr und das dann zusammensetzen sollte doch funktionieren, oder?)
|
|  Profil
E-Mail
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1508
|
deine schreibidee ist genau die lösung.
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
Omega2k
Otto-Normal-Poster
Beiträge: 55
|
Exakt!
[12]:[34]:[00] und dann begrenzt du einfach die Input-Felder auf ne maximale Länge von 2...
und beim Datum das gleiche...
Aber warum speicherst Du denn nicht als TimeStamp? Damit lässt sich doch wesentlich besser rechnen?
Nur eine Denksportaufgabe: Wie würdest Du aus Deinen Daten denn den Unterschied in Sekunden oder so von 2 verschiedenen Zeiten berechnen?
---

@ http://www.omega2k.de
|
|  Profil
Website
Editieren
Zitieren
|
hmader
Feiertags-Poster
Beiträge: 30
|
ok... ich hab jetzt an dem script herumgebastelt - aber ich hab' ein Problem mit dem Zusammenbasteln der einzelnen Variablen - Es wird einfach überall "0" angegeben, also die Variablen nicht in die Datenbank übertragen...
Hier der relevante Code:
1:
2:
3:
4:
5: | // Übernahme des Formulars in die Datenbank
$sql="INSERT INTO $tabellenname (date, time_start, time_end, channel, title, text, langtext, picture, gay, lesbian, travestie, hiv, tipp) values ('$date', '$time_start', '$time_end', '$channel', '$title', '$text', '$langtext', '$picture', '$gay', '$lesbian', '$travestie', '$hiv', '$tipp')";
// Erstellen der Variable $date ($time_start und $time_end funktionieren analog)
<input name="day" type="text" value="<? echo $day; ?>" size="2" maxlength="2">.<input name="month" type="text" value="<? echo $month; ?>" size="2" maxlength="2">.<input name="year" type="text" value="<? echo $year; ?>" size="4" maxlength="4"><? $date = $year."-".$month."-".$day; ?> |
|
|  Profil
E-Mail
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1508
|
$_POST['time'] nicht $time.
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
hmader
Feiertags-Poster
Beiträge: 30
|
Dumme Anfängerfrage... Wo genau in meinem Beispiel gehört da das $_POST['time'] hin? In die SQL-Abfrage oder ins Erstellen der Variablen? Hab herumprobiert, herumgelesen - aber ich steh wieder mal total auf der Leitung... ;((
|
|  Profil
E-Mail
Editieren
Zitieren
|
Lexia
Pixelschubser
Beiträge: 13
|
Hab mal eine kurze Frage zum Datum in PHP/MySQL.
Drei verschiedene Datumsangaben müssen bei mir in der Datenbank gespeichert werden, die Felder haben das Format date.
Bei der Abfrage gibts auch kein Problem, damit der User das Datum dann in der "normalen" Form sieht, also z.B. 13.09.2006, hab ich das so gelöst:
1: | $sql = mysql_query ("SELECT ID,name,DATE_FORMAT(offer_end,'%d.%m.%Y'),DATE_FORMAT(res_begin,'%d.%m.%Y'),DATE_FORMAT(res_end,'%d.%m.%Y'),price,price_offer,member_max,member_act,description,organizer,insurance,archived FROM tour_reise WHERE ID=$ID"); |
Nur wie kriege ich jetzt nach einem Update das vom User eingegebene Datum wieder ins richtige Format in die Datenbank? Wenn man jetzt einfach so speichert ohne das Format umzuwandeln werden alle Datumsangaben auf 0 zurückgesetzt.
Vielen Dank schonmal, ich hoffe das ist ganz einfach zu lösen...
Diese Nachricht wurde geändert von: languitar |
|  Profil
E-Mail
Editieren
Zitieren
|
raiserle
Fachidiot
Beiträge: 144
|
welches?
seh nicht, was du willst 
du kannst doch ein datum vom format date auch speichern
1:
2:
3:
4:
5: | <?php
$datum_str="2006-09-30";
$sql="UPDATE <tablle> SET dein_datum='".$datum_str."' WHERE <bedingung>";
mysql_qu.....
?> |
oder gehts dir darum, wie du aus einem timestamp ein solchiges format bekommst?
1:
2:
3:
4:
5: | <?php
$dein_format=date("Y-m-d");
$sql="UPDATE <tablle> SET dein_datum='".$dein_format."' WHERE <bedingung>";
mysql_qu.....
?> |
sorry, aber ich weis wirklich nicht was du da machen willst.
gruß raiserle
---
Irren is Menschlich
Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!
Kameradschaft ist, wenn der
Kamerad schafft !!!!
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
Lexia
Pixelschubser
Beiträge: 13
|
Nein, der User gibt ein Datum ein, z.B. das Startdatum einer Reise (also kein Timestamp möglich, da das Datum auch in der Vergangenheit und Zukunft liegen kann).
Der User gibt das Datum im Format 24.08.2006 ein.
So kann das datum aber nicht in der Datenbank gespeichert werden, da das entsprechende Feld in der Datenbank nicht vom Typ varchar ist sondern vom Typ date. Wie kann ich nun also das vom User eingegebene Datum in das Format date umwandeln bevor es in der Datenbank gespeichert wird?
|
|  Profil
E-Mail
Editieren
Zitieren
|