Tux RSS-IconHallo, und willkommen auf meinem Blog!
Falls du hier neu bist und dir gefällt was ich schreibe, dann abonniere am besten meinen RSS-Feed um auf dem Laufenden zu bleiben.
Was das ist kannst du hier erfahren.

Link 24.01.11, 22:19:20

Gefragt: Problemlösendes Denken

Als treue Leser kennt ihr sicherlich mein Archiv, erreichbar über einen Klick auf „Alle Einträge“ gaaaaaanz unten auf der Startseite. Natürlich kennt ihr es. Ganz besonders treue Leser kennen natürlich auch den Inhalt des Archivs auswendig, aber das tut hier nichts zur Sache.

Jedenfalls wollte ich das Ding gestern ein bisschen ansprechender gestalten.
Für alle die von Design keine Ahnung haben: Eine ÜBER 9000 Scrolleinheiten (Einheit hab ich gerade erfunden) lange Liste von Blogeinträgen ist nicht ansprechend gestaltet.

Deswegen kam ich auf die tolle Idee doch die einzelnen Blogposts zu den jeweiligen Monaten und Jahren zu gruppieren, damit da wenigstens ein bisschen Ordnung reinkommt. Da stand ich dann erstmal vor der Frage, wie ich das per PHP und MySQL bewerkstelligen sollte. (Jaja, PHP ist kacke, benutz doch Brainfuck/Perl/Java/Assembler das ist hundertmal besser, ich weiß, ich weiß.)

Letztendlich bin ich dann auf eine Lösung gekommen — sonst wäre das Archiv jetzt nicht so übersichtlich gestaltet :) —, aber ich möchte wissen ob ihr nicht eine bessere als die folgende Lösung habt. Und zwar läuft das ganze momentan so ab:

Mit Hilfe einer SQL-Abfrage bekomme ich alle Daten heraus die ich zum Anzeigen der Blogposts wissen muss, also Titel, Datum, Tags, usw. Danach wird während der Ausgabe überprüft ob der Name des Monats, den ich aus dem Datum extrahiere mit dem Namen des Monats des vorherigen Elements aus der Datenbank übereinstimmt:// Ausgabe des Monatsnamen wird auf Deutsch umgestellt setlocale(LC_ALL, "de_DE"); //gekürzte Datenbank-Abfrage $abfrage = "SELECT Datum, Titel, ID FROM weblog ORDER BY id DESC "; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { if (date("Y",$row->datum)!=$jahr_davor) { echo "<h2>".date("Y",$row->datum)."</h2>"; } if (strftime("%B", $row->datum)!= $monat_davor) { echo "<h1>".strftime("%B", $row->datum)." ".date("Y",$row->datum)."</h1>"; } $jahr_davor=date("Y",$row->datum); //strftime benutzen, sonst werden die Monatsnamen nicht korrekt ausgegeben $monat_davor=strftime("%B", $row->datum); // Code gekürzt, hier kommt noch anderes Zeug } Dann wird noch der Name des Monats in die Variable $monat_davor gespeichert, um das dann im nächsten Durchlauf vergleichen zu können. Mit der Ausgabe der Jahreszahl ist es das gleiche. Einfach mal auf der Archiv-Seite anschauen, dann bekommt man schnell einen Überblick.

Meine Frage an euch ist jetzt aber: Kann man das schöner/besser/schneller lösen? Ich hab da zuerst an eine Lösung per "GROUP BY" und Kreuzanfragen mit MySQL gedacht, bin aber auf kein Ergebnis gekommen. Vielleicht würdet ihr es ja auch nicht anders als ich machen, mir egal, sagt mir was ihr davon haltet.

Verbesserungsvorschläge zur weiteren Gestaltung des Blog-Archivs sind ebenso gerne gesehen.
Mal unter uns: Das Archiv habt ihr noch nicht gekannt, oder? :P

tags:#php #programmieren #blog


Share

Kommentare:



Kommentare erscheinen erst nach der Freigabe unter einem Blogpost.
HTML ist nicht erlaubt.




(optional, nur falls du bei neuen Kommentaren benachrichtigt werden willst)