PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   Projekthilfe (https://www.php-resource.de/forum/projekthilfe/)
-   -   Datumssortierung und -vergleich DB (https://www.php-resource.de/forum/projekthilfe/91942-datumssortierung-und-vergleich-db.html)

ACRDF 14-05-2008 08:42

Datumssortierung und -vergleich DB
 
Hallo,

ich habe (schon wieder) einige Fragen und würde mich freuen, wenn mir jemand da weiterhelfen könnte:

Über ein Formular sollen die Besucher meiner Seite die Möglichkeit haben Termine einzutragen. - Da ich hier mit der unzureichenden Fähigkeiten der Besucher oder mit Schabernack (zum Beispiel Termineinträge für das Jahr 2050...) rechne, werde ich dies per DropDown-Felder (select/option) machen. Also werden die Besucher den Tag (01, 02, 03 ...), Monat (Januar, Februar, März...) und das Jahr (2008, 2009 ...) sozusagen vorgegeben bekommen und dies wird dann auch so in meiner Datenbank entsprechend gespeichert (jeweils 1 Feld).
Nun möchte ich folgende Sache bewerkstelligen:
1. Das Datum vom Termin sollte bereits in der Formular-Senden-PHP umgewandelt werden und als 4. Feld in der Tabelle gespeichert werden, da ich die Einträge sortiert nach dem Datum (Jahr, Monat, Tag) später ausgeben möchte.
2. Der Termin soll mit dem aktuellen Datum verglichen werden (ich möchte veraltete Termine in der Ausgabe "ausfiltern").

Hat jemand diesbezüglich einen konstruktiven Vorschlag, wie dies geschehen könnte?

jahlives 14-05-2008 11:10

zu 1)
Wieso nochmals das Datum des Termins speichern. Du hast es ja bereits in den drei Spalten (obwohl ich es sinnvoller finde nur eine Spalte zu verwenden!!)
Ich würde auf jeden Fall das Datum in EINE Spalte speichern. Dann kannst du mit den Zeitfunktionen von mysql arbeiten. Ansonsten müsstest du (bei drei Spalten) das Datum immer erst zusammensetzen, um dann eine MySql-Zeitfunktion darauf auszuführen

ACRDF 14-05-2008 11:22

Also ich MUSS es unbedingt in 3 Spalten speichern, da es für die Ausgabe ganz entscheidend ist (gebe Jahr, Monat, Tag an unterschiedlichste Stellen heraus). Die 4. Spalte mit der vorhergehenden Umwandlung ist unter anderem dazu gut, dass ich die Ausgabe nach der 4. Spalte sortiert ausgeben möchte und wahrscheinlich ein vergleich des aktuellen Datums mit dem Datumformat der 4. Spalte am Einfachsten wäre.

onemorenerd 14-05-2008 11:25

Zitat:

Original geschrieben von ACRDF
Also ich MUSS es unbedingt in 3 Spalten speichern, da es für die Ausgabe ganz entscheidend ist (gebe Jahr, Monat, Tag an unterschiedlichste Stellen heraus).
Das ist doch kein Grund. MySQL hat auch Funktionen, die dir nur Jahr, Monat oder Tag eines Datums liefern.

jahlives 14-05-2008 11:27

Zitat:

Also ich MUSS es unbedingt in 3 Spalten speichern, da es für die Ausgabe ganz entscheidend ist (gebe Jahr, Monat, Tag an unterschiedlichste Stellen heraus). Die 4. Spalte mit der vorhergehenden Umwandlung ist unter anderem dazu gut, dass ich die Ausgabe nach der 4. Spalte sortiert ausgeben möchte.
Brauchst du trotzdem nicht drei Spalten dazu. Beim Auslesen kannst du das Datum mittels mysql_Zeitfunktionen umformatieren, um dir z.B. den Tag, den Monat und das Jahr als einzelne Werte zu holen.
Du musst dir das ungefähr so vorstellen: Du hast eine Spalte in der DB mit der Grösse in Byte eines Files. Jetzt willst du die Grösse aber in KB, MB und GB ausgeben. Dazu könntest du 3 neue Spalten anlegen und die Werte reinschreiben. Oder du verwendest nur eine Spalte (Byte-Spalte) und formatierst die Werte beim Auslesen in KB etc um.
4 Spalten für ein Datum ist etwas gar deftig ;)

ACRDF 14-05-2008 12:12

Na OK... Ihr habt mich überzeugt.

Wie löse ich nun die ganze Problematik?
1. Die Umwandlung in das Datum-Format (vor dem Abspeichern in die Tabelle)?
2. Datumsvergleich mit aktuelles Datum?
3. Datumsteilausgaben?

jahlives 14-05-2008 12:38

1. setzt doch das Datum mittels PHP aus den Usereingaben zusammen. Dabei musst du das Vorgabeformat für Datum seitens MySql beachten.
2. WHERE datum1=datum2
3. z.B. mit DATE_FORMAT(date,format)


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:45 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG