Sven Rautenberg: Datumsanzeige

Beitrag lesen

Moin!

Welche Tabelle? Wo ist die?
in meiner MySQL Datenbank

Version?

Dieses Format scheint mir für die Aufgabe extrem ungeeignet. Ein Timestamp definiert eine exakte Sekunde - was bedeutet das für das Inserat? Wird es nur eine Sekunde angezeigt, oder an dem gesamten Tag von 00:00:00 bis 23:59:59 Uhr? Oder _ab_ der Timestamp-Uhrzeit bis zu einer anderen Timestamp-Uhrzeit?

Es ist so in der Datenbank eingetragen: 1205881200,1206745200, usw.

Wie ich schon sagte: Extrem ungünstige Speicherform, Daten als String, und dann noch kommaseparierte Unix-Timestamps.

Die korrekte Speicherform ist:
a) für das Datum selbst als Spaltenformat DATE oder DATETIME (je nachdem, ob die Uhrzeit wichtig ist und gespeichert werden muß, oder nicht)
b) für die 1:n-Verknüpfung von Daten mit Inseraten eine separate Tabelle.

Wie liest du generell aus? Siehe die erste Frage oben zum Thema "Tabelle".

generell habe ich die mit LIKE ausgelesen...

Auch ganz schlecht. Das erfordert Stringoperationen, die nicht durch einen Index unterstützt werden können.

Nun muss ich ja Inserate zwischen den Daten auslesen...

das funktioniert leider nicht:

$heute = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$tage = mktime(0, 0, 0, date("m"), date("d")+10, date("Y"));
$query2 = $db->dbquery("SELECT * FROM inserate WHERE daten BETWEEN $heute and $tage ORDER BY daten ASC");

Hättest du wenigstens die Timestamps als INT in einer separaten Tabelle gespeichert, würde diese Abfrage (unter Hinzufügung des notwendigen Joins) ja im Prinzip funktionieren.

Mit DATE als Datenformat würdest du dir auch die Umwandlung in Timestamps sparen können.

//und dann umwandeln in normales format  (zum anzeigen für die user):

$separateDaten = explode(',',$row['daten']);
sort($separateDaten, SORT_NUMERIC);
for($i=0;$i<count($separateDaten);$i++)
{
$daten = date("d.m.Y",$separateDaten[$i]);

}

Und das wäre auch der Datenbank zu überlassen, die kann dir problemlos dein Wunschdatumsformat aus einem DATE-Feld generieren, dass mit PHP nur noch auszugeben ist.

- Sven Rautenberg

--
"Love your nation - respect the others."