News sortieren nach Datum für die letzten 5 Tage

Shinzo

Mitglied
Hallo Leute, ich hab grad ein Problem mit meiner Newsabfrage.

Ich hab eine Newstabelle, in ihr sind eben die News, Titel, ..etc, sowie das DATUM, welches ich mittels time(); generiere. Jetzt meine Frage, wie gebe ich diese News sortiert für die letzten 5 Tage aus? Ungefähr so:

----------------------
20.06.2005
- news
- news
---------------------
19.06.2005
- news
- news
---------------------
18.06.2005
- news
- news

Wäre wirklich toll, wenn ihr mir helfen könntet.
Wie es ungefähr sein sollte, kann man auf ghome.de rechts sehen.
Danke im Voraus
 
Leider hilft mir der Thread überhaupt nicht weiter.

Ich habe eher ein Problem mit dem auslesen bzw. ordnen mit dem timestamp.

Ich weiss nicht wie ich solch eine SELECT Abfrage erstelle. :(
 
Die Abfrage sieh in deinem Fall so aus:

PHP:
SELECT Datum, News, Und-mehr FROM News ORDER BY Datum DESC

Das heißt also, dass die Spalten DATUM, News, Und-mehr aus der Tabelle News gelesen werden und die Ausgabe nach dem Datum sortiert wird. Beginnend mit dem neuesten.

Willst du jetzt auch noch, dass nur die News der letzten fünf Tage angezeigt werden?

Mfg

Patte :)
 
Ich denk er wollte die News nicht nur nach dem Datum sortiert ausgeben, sondern alle News der letzten 5 Tage gegliedert ausgeben.
Ich hab mal versucht sowas hinzubekommen. Tests einfach mal, ich habs selber nicht getestet.
Code:
<?php
$heute = getdate();
$start = mktime(0, 0, 0, $heute[mon], $heute[mday], $heute[year]);
$ende = $start + 86399;
for($i=1; $i<=5; $i++){
  echo date("d.m.Y", $start)."<br>";
  $query = "SELECT Datum, News, Und-mehr FROM News WHERE DATUM > '".$start."' AND DATUM < '".$ende."'";
  $erg = mysql_query($query);
  while($row = mysql_fetch_array($erg)){
    echo "News bla bla bla <br>";
  }


  $start = $start - 86400;
  $ende = $ende - 86400;

}
?>
 
Dann ist ja gut :)
Mir ist aber noch ne Kleinigkeit aufgefallen:
Da bei der Abfrage nur < und > verwendet wird, fehlen 2 Sekunden. Deshalb muss man da <= und >= benützen, dann dürfte alles klappen.

Mfg Spechter
 
Dazu müssen jedoch mindestens fünf Datenbankabfragen gesendet werden. Es ginge auch mit nur zwei: Die erste ermittelt das fünfte eindeutige Datum und die zweite die einzelnen Einträge.
 
Ja schon, aber dann muss man sich extra noch was einfallen lassen, um dann die News schön gegliedert ausgeben zu lassen. Es ist ja nicht nur eine News pro Tag sondern können ja auch mehrere sein.
 
Meine Überlegund war folgende:
Zuerst wird das fünfte eindeutige Datum ermittelt:
Code:
SELECT
        DISTINCT `datum`
  FROM
        `tabelle`
  ORDER BY
        `datum` DESC
  LIMIT
        5, 1
Danach wird dieser Wert für die Abfrage der einzelnen Datensätze benutzt:
Code:
SELECT
        `datum`,
        …
  FROM
        `tabelle`
  WHERE
        `datum` <= <Wert aus erster Abfrage>
Weiterhin werden die Daten wie Folgt verarbeitet:
PHP:
<?php

	$result = mysql_query(…);
	$tmp = NULL;
	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		if( $tmp != $row['datum'] ) {
			echo $row['datum'];
		}
		echo …
		$tmp = $row['datum'];
	}

?>
Damit sollte Vergleichbares erzielbar sein.
 

Neue Beiträge

Zurück