wenn Eintrag neuer als einer Stunde...

ArFiBa

Erfahrenes Mitglied
Hallo Leute,

ich möchte in meinem Forum alle Einträge die neuer als eine Stunde sind besonders kenntlich machen. Das wollte ich so umsetzen:
PHP:
	  <?php 
	  if ($row_for_thema['thema_time']+3600 < date("Y.m.d - H:i:s"))
	  echo "alt";
	  else
	  echo "neu";
	  ?>

Klappt jedoch so nicht. Er zeit immer alle als neu an.
Das Datum ist in der DB im Format gespeichert wie es auch oben steht.
Pack ich das vielleicht falsch an?
 
Versuch mal anstatt date("Y.m.d - H:i:s") einfach: time()
Also:
PHP:
<?php
      if ($row_for_thema['thema_time']+3600 < time())
      echo "alt";
      else
      echo "neu";
?>

Mfg Spechter
 
Kann es sein, dass thema_time ein Timestamp ist? Das würde sich auf jeden Fall empfehlen!
Dann müsstest du das nämlich so machen:
PHP:
if ($row_for_thema['thema_time']+3600000  < time()) 
// time() liefert den aktuellen Timestamp
// 3600000, weil dass eine Stunde in Millisekunden ist
      echo "alt"; 
else 
      echo "neu";
 
Speicher einfach den Timestamp in der Datenbank.
Bei der Ausgabe kannst du dann den Timestamp in das o.g. Datumsformat bringen.
PHP:
<?php echo date("Y.m.d - H:i:s",$timestamp);?>
Mit einem Timestamp kannst du auf jeden Fall viel leichter arbeiten als mit einem formatiertem Datum.
Dann funktioniert nämlich auch mein oben geposteter Code und das Problem wäre erledigt.
 
dann solltest du daraus erst nen Timestamp machen (schon in der DB-abfrage mit DATE_FORMAT oder UNIX_TIMESTAMP) und dann die eine stunde dazu zählen
flooo
 
Wenn man das Datum in der Datenbank schon nicht als DATETIME speichert, wie es sich IMHO gehört, dann doch wenigstens als INT, indem man in dem Feld einen UNIX-Timestamp ablegt. Als CHAR oder VARCHAR sollte man es nie ablegegen, da es, wie man hier sieht, immer wieder zu Problemen führen wird.
Die passende Diskussion zum Thema Datum speichern gab es auch schon.

Mit den Datums- und Zeit-Funktionen und IF lässt sich direkt bei der Abfrage ein passendes Attribut für neu und alt in die Ergebnistabelle einfügen.

Code:
SELECT 
#... andere Felder,
IF (DATE_SUB(NOW(), INTERVAL 1 HOUR)>`thema_time`,
  'y','n') AS `istAlt`
FROM
#...
Gruß hpvw
 
Zuletzt bearbeitet:
Hab mein Forumlar jetzt so umgestellt, dass es das Datum als time() zurückgibt. Nur zwei Sachen währen da noch:
-Was ist mit den Dingen die schon so als Datum in der DB stehen kann ich die noch umwandeln oder kann ich die vergessen?
-Wieso als int speichern? ich hab in der Schule mal gelernt das man Daten (Mehrzahl von Datum nicht Daten an sich) nie als Ganzzahl speichern soll
 
Zurück