Axel Richter: datensätze "gruppiert" ausgeben

Beitrag lesen

Hallo,

die kommentare werden jeweils so abgespeichert:

news_[fortlaufende nummer]@uniqid|name|email|überschrift|text|datum|uhrzeit|ip\n

ich hätte nun gerne, dass diese ungefähr so ausgegeben werden:

Kommentare zum Hauptbeitrag news_x:

[Kommentare]

Kommentare zum Hauptbeitrag news_y:

[Kommentare]

Die Einträge stehen als Zeilen in der reihenfolge ihres Auftretens in einer Textdatei, nehme ich an. Mit einer Datenbank könntest Du ja beliebig sortieren.

Die Textdatei kannst Du zeilenweise in eine zusätzliche Speichereinheit (ein Array oder eine Collection von Objects) einlesen. Diese Speichereinheit sortierst Du dann, wie gewünscht, und erzeugst die Ausgabe aus dieser sortierten Speichereinheit.

Schon bei einem einfachen Array wäre eine Sorterung nach news_[x] ja kein Problem, weil das ja am Beginn jedes Eintrags steht.

Wenn Du speziellere Sortierungen wünschst, müsstest Du multidimensionale Arrays, also Arrays mit Arrays als Elemente, benutzen. Bsp.: Das Hauptarray enthält als Elemente Arrays mit dem Aufbau:
array ("news_x", "uniqid", "name", "email", "überschrift", "text", "datum", "uhrzeit", "ip")

also:

$beitrag = array(array ("news_x", "uniqid1", "name1", "email1", "überschrift1", "text1", "datum1", "uhrzeit1", "ip1"), array ("news_y", "uniqid2", "name2", "email2", "überschrift2", "text2", "datum2", "uhrzeit2", "ip2"), ...)

$beitrag[0][2] wäre dann z.B. "name1".

Je nach zur Verfügung stehender Programmiersprache kannst Du auch mit assozativen Arrays oder Collections of Objects arbeiten:
$beitrag[0]["news_lfn"] = "news_x";
$beitrag[0]["uniqid"] = "uniqid1";
$beitrag[0]["name"] = "name1";
...
$beitrag[1]["news_lfn"] = "news_y";
$beitrag[1]["uniqid"] = "uniqid2";
$beitrag[1]["name"] = "name2";
...

Wie man soetwas dann sortiert, hängt auch wieder von der verwendeten Programmiersprache ab.

Als weitere Möglichkeit gäbe es das Speichern in einem Random Access File mit zusätzlichem Anlegen von Index-Dateien. Die Index-Dateien speichern dabei, entsprechend vorsortiert, die Dateizeiger-Positionen der Datensätze, welche im Random Access File dann bei der Ausgabe gezielt angesprungen werden könnten. Man spart dadurch das zusätzliche Speicherkonstrukt (Array...) im Arbeitsspeicher, muss allerdings den größeren Speicherbedarf des Random Access Files und den zusätzlichen Aufwand der Verwaltung der Index-Dateien in Kauf nehmen.

viele Grüße

Axel