Eine Art Blog-Archivierung ( $monat $datum )

Blattodea

Grünschnabel
Eine Art Blog-Archivierung ( $monat $jahr )

Guten Tag!

Ich benötige nach langem Suchen in diesem Forum nun doch die Hilfe eines mir überlegeneren Menschen. Es geht eigentlich bloß um einen kleinen Denkanstoß, den ich benötige, um das Ganze dynamisch umzusetzen.
Als Beispiel möchte ich dieses Bild anfügen:

HIER KLICKEN

Die Datumsleiste (im Bild rechts) soll dynamisch aus der Datenbank erstellt werden. Sie soll mittels MySQL der Spalte „datum“ (als timestamp gespeichert) ausgelesen und als Link für alle vorhandenen Monate (mit Jahr) ausgegeben werden.

Bei Klick – wie logisch – sollten beispielsweise dann alle Beiträge, die im Zeitraum von 01.05.2005@0:00Uhr bis 31.05.2005@23:59 verfasst wurden, ausgegeben werden, wobei ich das dann auch selber hinbekommen würde.

Danke im Voraus für eure Antworten,
Blattodea
 
Zuletzt bearbeitet:
Zu aller erst solltest du einen MySQL-Internen Datums- und Zeittypen zur Speicherung der Zeiten verwenden, da sich mit diesen am einfachsten arbeiten lässt.

Eine entsprechende Abfrage mit einem MySQL-Internen Datums- und Zeittypen könnte wie folgt aufgebaut sein:
Code:
SELECT DISTINCT
        YEAR(`datetime`) AS `jahr`,
        MONTH(`datetime`) AS `monat`,
        …
  FROM
        …
  ORDER BY
        YEAR(`datetime`) DESC,
        MONTH(`datetime`) DESC
 
Ei karamba, jetz muss ich doch nochmal doof fragen!
Ich habe meine Daten ( Datum ) als timestamp gespeichert, also in diesem stil ( 112726662 )
Das problem ist, dass der von dir beschriebene Query sowohl für jahr als auch für monat nen NULL-wert zurückgibt ( sowohl im mysqladmin als auch in meinem code )

Wie kann das sein
nur mal so als kleines testscript:

PHP:
$sql = "SELECT DISTINCT
        YEAR('datum') AS jahr,
        MONTH('datum') AS monat
  FROM
       bzg_blog
  ORDER BY
        YEAR('datum') DESC,
        MONTH('datum') DESC
";

mysql_connect( $host , $user , $pw ) or die (mysql_error());
mysql_select_db( $db ) or die (mysql_error());

$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo $row['monat'].$row['jahr'];
}
?>
 
Ich hatte mein Abfragebeispiel auf die Benutzung eines MySQL-internen Datums- oder Zeittypen bezogen, nicht auf einen Unix-Zeitstempel. Außerdem habe ich so genannte Backticks zur Auszeichnung der Spaltennamen verwendet, die du fälschlicherweise durch einfache Anführungszeichen ersetzt hast.
 
Zurück