datumsfunk. feldtyp: date o. text u. mktime()?

otix

Grünschnabel
guten morgen,

ich schreibe an einem script, bei dem der user einen "saison-namen" eingeben kann und zu dem saison-namen 2 daten : "gueltig_von " und "gueltig _bis "
(so heißen die felder in der DB)

jetzt frag ich mich von welchem sinnvollem feldtyp diese beiden sein sollten(in der DB) text oder date ?

wenn sie vom typ text sind, brauch ich sie eigentlich nicht weiter zu formatieren (denke ich)...

nun geschieht (soll) aber mit den beiden daten später folgendes

es soll in einem dropdowwn-menue jedes datum zwischen "gueltig_von" und
"gueltig _bis " angezeigt werden:

bsp.:

gueltig_von: 01.02.2004
gueltig_bis: 05.10.2004

anzeige (drpdown):

01.02.2004 <- start
02.02.2004
03.02.2004
.
.
.
05.10.2004 <- ende

wie fang ich da am besten an (ich glaub etwas mit mktime())....aber vor übernahme in DB oder bei anzeige im drpdown - menue

danke für einen tip

gruß
otix
 
Also wenn du später mit dem Datum rechnen willst dann kommst du im den Feldtyp DATE gar nicht drum herum. Wenn du den Benutzer das Datum eingeben lässt solltest du es zuerst auf Gültigkeit überprüfen und erst danach in der Form YYYY-MM-DD speichern. Dann kannst du per SQL prima mit dem Datum rechnen, sortieren, usw.

Wie du das Datum dann in die richtige Form bringst ist eigentlich egal. Du kannst es als String direkt zusammenbauen oder auch mit mktime(); in einen Unix-Zeitstempel umwandeln und dann für die Datenbank mit strftime(); wieder richtig formatieren.
 
timestamp

ok, ich hab mich entschieden das datum als timestamp (feldtyp) in die DB zu übernehmen, und zwar mach ich das jetzt so

$a_gueltig_von= explode(".",$_POST[gueltig_von]);

$a_gueltig_von= mktime(0,0,0,$a_gueltig_von[1],$a_gueltig_von[0],$a_gueltig_von[2]);

echo $a_gueltig_von; (ausgabe korrekt)

aber wenn ich den query ausführe:

INSERT INTO ..... VALUES (' $a_gueltig_von' )

steht in der DB nur nullen

warum (weil standart : NULL)?
 
wenn du dein feld als Timestamp nimmst, mußt du dort auch eine Unixzeigt eintragen lassen und diese später wieder zurückrechnen.
 
Zurück