48-Stunden-Suche für Kleinanzeigenmarkt

O

Orange

Hallo zusammen,

ich habe mich bereit erklärt einen kostenlosen Kleinanzeigenmarkt für
einen guten Bekannten zu entwickeln, obwohl ich im Bereich MySQL und
PHP noch ein absoluter Newbie bin.

Die meisten Probleme und Schwierigkeiten habe ich bereits gelöst,
eines bereit mir jedoch nach wie vor Kopfzerbrechen:

Unter anderen soll dieser Kleinanzeigenmarkt eine Funktion bieten, um
Anzeigen der letzten 48 Stunden aufzulisten.

Über den prinzipiellen Lösungsansatz bin ich mir schon bewusst.
Alles was ich machen müsste, wäre innerhalb des Querys das Datum der Anzeige (modtime) mit dem aktuellen abzüglich 48 Stunden vergleichen (zeit1).

Beide Datumswerte (modtime und zeit1) ermittelte ich durch:

date("d.m.Y - H:i")


Der entsprechende Query würde in etwa wie folgt lauten:


mysql_query("SELECT * FROM tabelle WHERE modtime<" . $zeit1, ...


Soweit so gut, doch leider bin ich mir nicht darüber im Klaren, ob ich
Datumswerte so ohne weiteres vergleichen kann, und wie ich auf
einfache Art und Weise (also ohne alles in Stunden umzurechnen) 48
Stunden von der Variablen $zeit1 abziehe.

Unter Umständen ist mein Lösungsansatz auch viel zu umständlich und ihr kennt einen besseren.
Ich bin für jede Hilfe sehr dankbar!

Beste Grüsse

Tom
 
Ansatz

...rechne die relevanten Daten mit strtotime in Sekunden um, diese sind dann direkt zu vergleichen.

strtotime
(PHP 3>= 3.0.12, PHP 4 >= 4.0b2)

strtotime -- Parse about any english textual datetime description into a UNIX timestamp
Description

int strtotime (string time [, int now])


The function expects to be given a string containing an english date format and will try to parse that format into a UNIX timestamp.

Eine Möglichkeit wäre dann die Umwandlung mit

strtotime(date("Y-m-d", time()));

Diese Umrechnung gibt die beispielsweise die erste Sekunde vom heutigen Tag zurück, da im der date()-Funktion auf die Ausgabe der Stunden, Minutem,Sekunden verzeichtet wurde und damit der Beginn des heutigen Tages angenommen wird.

Wenn Du hingegen

strtotime(date("Y-m-d H:i:s", time()));

verwendest, dann hatt das ganze Ding keinen Sinn, weil strftotime()=time() ist ;-)

BTW, Dein Vergleich muss dann lauten:

time()<$zeitsekunden_db+(3600*24*2)

woebei zeitsekunden_db die Zeit in Deiner Datenbank ist. Wenn die aktuelle Zeit innerhalb eines 48 Stunden Limits ist, dann muss der Datensatz angezeigt werden (48h=3600 Sekunden pro Tag*24 Stunden*2 Tage).

Vielleicht hilft es Dir ja...

ufoman2
 

Neue Beiträge

Zurück