Hilfe bei Datentypen für Termin DB

MasterJM

Erfahrenes Mitglied
Hallo,

ich bin recht neu beim Thema php und sql, also langsam :)

Folgendes:

Ich möchte gerne eine Termin Datenbank für eine Homepage schreiben,
da ich mir nicht schon bei der Auswahl der Datentypen Brocken in den
Weg legen möchte, grade wenns an Sachen wie Sortieren, Abfragen etc geht
wollte ich hier zuerst mal fragen.
Mit folgenden Eckdaten kann man das Projekt umschreiben.
a) Datum
b) Uhrzeit
c) Thema/Text/Beschreibung
d) Art (Im Grunde sind da 2 Sachen denkbar)
e a) Wenn Art (d) = 1 dann ist dieses Feld leer
e b) Wenn Art (d) = 2 dann ist Feld belegt mit kurzem Text

So in etwa muss es sein, Probleme sind für mich jetzt z.B.
Termine die über mehrere Tage gehen z.B. 26. - 27. 10. 2005 oder so

Uhrzeit brauch ich eigentlich nicht wirklich, zum Vergleich
(Termin noch aktuell oder abgelaufen würde der Tag reichen)

Jetzt würde ich halt gerne wissen, wie ich das Datentyptechnisch am besten
löse, damit das sortieren und arbeiten später mit php leichter fällt.

Danke!
 
Da ich immer in SQL sortiere und selektiere, würde ich immer DATE und DATETIME verwenden. Wenn Du in PHP einen Unix-Timestamp benötigst, bietet MySQL die Funktion UNIX_TIMESTAMP, um das Feld entsprechend umzuwandeln.

Eine interessante Diskussion zum Thema "Datum in Datenbank speichern" gab es schon mal.

Speicher doch Start- und Endzeit des Termins als DATETIME, dann hast Du auch keine Probleme, wenn Termine über einen Zeitraum gehen. Hast Du nur einen Zeitpunkt-Termin, so kannst Du null in das Endzeit-Feld eintragen.

Gruß hpvw
 
hpvw hat gesagt.:
Speicher doch Start- und Endzeit des Termins als DATETIME, dann hast Du auch keine Probleme, wenn Termine über einen Zeitraum gehen. Hast Du nur einen Zeitpunkt-Termin, so kannst Du null in das Endzeit-Feld eintragen.

Gruß hpvw

Und wie müsste der Input für dieses DATETIME aussehen?
Bei Date z.B. muss ich ja schon Jahr.Monat.Tag eingeben.

JM
 
Hi,

noch mal: mir gehts nicht so sehr um die Theorie,
die kann ich wie du ja auch gesagt hast leicht nachlesen ;)

Mir gehts eher um: Wie sollte man das praktisch machen?

Wenn ich nun DATETIME mit Start und Ende nehme,
wie lässt man sowas am besten vom User eingeben

"JJJJ-MM-TT HH:mm" ist nun mal nicht so super wie
(grade wenn Leute ohne PC Kenntnisse das Interface bedienen)

Sowas wäre da besser:
Datum: TT-MM-JJJJ
Uhrzeit: HH.mm


Kann ich so eine Eingabe direkt als eine DATETIME speichern?
Wenn ja wie?

Danke ;)
 
MasterJM hat gesagt.:
Sowas wäre da besser:
Datum: TT-MM-JJJJ
Uhrzeit: HH.mm


Kann ich so eine Eingabe direkt als eine DATETIME speichern?
Wenn ja wie?

Danke ;)
Nein, kannst Du nicht, aber PHP bietet diverse Funktionen, um Strings in Teilstrings zu zerlegen und auch wieder zusammen zu fügen.
Ich würde übrigends nicht tt-mm-jjjj zulassen, da das Trennzeichen "-" meines Wissens ausschließlich in dem nach ISO 8601 definierten Format verwendet wird und dieses eben [jj]jj[-mm[-tt]] ist (optionale Angaben in eckigen Klammern).
Ich würde mit [phpf]explode[/phpf] nach den verschiedenen Trennzeichen trennen, dann prüfen, nach welchem Trennzeichen ein Array mit drei Elementen entstanden ist und dem Trennzeichen entsprechend Jahr, Monat und Tag zuordnen und den String dem MySQL-Format entsprechend wieder zusammen setzen. Gegebenenfalls kannst Du dabei auch das Jahr auf Zwei- oder Vierstelligkeit prüfen. Beim Trennen nach Punkt kannst Du (zumindest in einer deutschsprachigen Anwendung) relativ sicher sein, dass es tt.mm.jj[jj] ist. Beim Slash gibt es etliche Varianten.

Gruß hpvw
 
Zurück