Datum zum späteren Zeitpunkt

M155P3RF3K7

Mitglied
Hey,

ich habe ein Problem mit meinem Datum. Auf einer Seite werden News geschrieben, diese werden in einer Tabelle angezeigt. Wenn die News heute erfasst wird erscheint ein New Icon. Doch das erscheint nur an dem Tag wo es erfasst wurde. Aber es soll ca. 7 Tage bleiben.

Mein Quellcode:

Code:
//$da= strtotime('+1 day', mktime(0, 0, 0, date('n'), date('j'), date('Y'), date('I'))); <-- gescheiterter Versuch

		$datum = $row[anlage_datum]; //wann die news erstellt wurde
		$da1 = "$datum[0]$datum[1]$datum[2]$datum[3]-$datum[5]$datum[6]-$datum[8]$datum[9]";
		$da = date("Y-m-d");
		if($da1 == $da)
		{
		echo "<img SRC=/...>";
		}

Das Datum wird aus meiner MySQL-Datenbank entnommen. Ist vllt. blöd, aber ich komme einfach nicht drauf wie ich das schreiben soll....

Danke....
 
Welchen Typs ist die Spalte denn? Ist es ein MySQL-eigener Datumstyp?
Falls ja, dann könntest du diese Entscheidung auch MySQL übernehmen lassen, etwa:
Code:
SELECT
        IF( `spalte` >= DATE_ADD(NOW(), INTERVAL -7 DAY), 1, 0 ) AS `neu`,
        …
  FROM
        `tabelle`
 
Ich glaube, dass ich das mit PHP lösen muss, da der Typ ein Anlagedatum ist und dann gibts noch ein Archivdatum, wenn ich das überschreibe, steht das da nicht mehr. Daher ist SQL eher schlecht. Aber dankeschön...
 
Naja, dann musst du wohl das Datum von "Heute" mit mktime(); in eine Variable schreiben.
Dann musst du das Datum aus der Datenbank "auseinandernehmen" und ein eine Variable schreiben. Nächster schritt wäre dann herauszufinden, wie hoch die Differenz bei 7 Tagen ist und danach entscheiden.

PHP:
$heute = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$month = substr($row[anlage_datum], 6,7);
$day = substr($row[anlage_datum],9,10);
$year = substr($row[anlage_datum], 0,4);
$entry_date = mktime(0, 0, 0, date($month), date($day), date($year));

$tag1 = mktime(0, 0, 0, 1, 1, 2000);
$tag7 = mktime(0, 0, 0, 1, 7, 2000);
$differenz = $tag7 - $tag1;

$days_since = $heute - $differenz;

if($entry_date > $days_since)
{
$new = true;
}
else
{
$new = false;
}

So könnte es funktionieren - Garantie gebe ich keine ab - probiert habe ich es nämlich noch nicht! :)
 
So getestet ist es und es funktioniert, nur einen Tick hat es, es zieht nur die 7 Tage von diesem Monat ab. Heute ist der 2.5., die News von gestern etc. werden angezeigt, doch die vom 30. .... nicht.

Aber naja, ich werde mal sehen, ob sich das irgendwie beheben lässt, vllt. hast du ja auch noch eine Idee....
Trotzdem danke, ich bin schon mal einen Schritt weiter;)

Also am einfachsten wäre es mit SQL zu lösen und zwar so:

Code:
WHERE TO_DAYS(NOW()) - TO_DAYS(anlage_datum) <= 7

Aber das funktioniert ja nicht bei meinem Skript....
 
Zurück