Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

php gästebuch andersrum auflisten





Frage

hab ein simples gästebuch geschrieben.. welches sogar funktioniert.. allerdings listet es die einträge von 1 bis $letztereintrag, von oben nach unten auf.. das heisst der aktuellste eintrag ist ganz unten :-( .. das würde ich gern "andersherum" haben!! die php greift auf ein einfaches textfile zu, und die ausgabe erfolgt in einer while schleife.. ..... while(!feof($datei)) { $nr++; $zeile = fgets($datei, 1000); $liste = explode("|",$zeile); if($liste[1]==""){$liste[1]="eMail";} if($liste[2]==""){$liste[2]="Homepage";} if($liste[0]!=""&&$liste[3]!="") { echo "<br />"; echo "<img src='../fotos/linie.jpg' width='460' height='2'></img><br /><br />\n"; echo "<table width='60%' cellpadding='0' border='2' bordercolor='#000000' bgcolor='#c0c0c0' class='blau'><tr>"; echo "<td align='left' bordercolor='#c0c0c0'><p><span class='rot'>".$nr.".  ".$liste[0]."</span> - ".$liste[1]."<a href=".$liste[2]." target=\"_blank\"><span class='rot'><br />".$liste[2]."</span></a><br /><br />".$liste[3]."</p>\n"; echo "</td></tr></table>"; } } fclose($datei); } ..... dank im voraus..

Antwort 1 von Nanuk

Hallo r...l...
das einzige, was mir einfällt ist der Vorschlag, schon bei den Eintragungen in Dein Gästebuch vor jedem Eintrag mit
int rewind();
an den Anfang Deiner Textdatei zu gehen und dadurch den neuen Eintrag vorn anzustellen.

Dadurch sollte das Umkehren der Anzeige gelingen...

Gruß

Nanuk

Antwort 2 von Nessus

Du solltest das File rekursiv einlesen.
Lese hier mal weiter:
http://www.dclp-faq.de/q/q-datei-rueckwaerts.html

Warum arbeitest Du nicht mit einer DB?
Da geht es IMHO bedeutend einfacher.

HTH

Nessus

Antwort 3 von raben.lazarus

dank erstmal...
hmm...
rewind wär ne gute idee, aber leider nicht wenn ich im append "modus"
zeilen in der textdatei hinten anhänge.
dann ignoriert er anscheinend rewind
...guckst du...
http://www.php-center.de/de-html-manual/function.rewind.html

nessus tip muss ich mir erstmal anschauen ;-)

Antwort 4 von semi

Wie wäre es damit

$alleZeilen = file("dateiname");
array_reverse($alleZeilen);
...
dann spliten und ausgeben

Gruß,
Michael

Antwort 5 von raben.lazarus

ok dazu hab ich ne fragen...
bei ner datei kann ich mit "feof" prüfen
ob der zeiger am dateiende ist..
wie krieg ich das mit dem array hin??
also funktionieren tuts schon nur da es ja dynamisch sein soll müsste ich die grösse des index wissen..


Antwort 6 von semi

foreach ($alleZeilen as $zeile) {
  $liste = explode("|",$zeile);
  ...
}
oder

for($i=0; $i<count($alleZeilen); $i++) {
  $zeile = $alleZeilen[$i];
  $liste = explode("|",$zeile);
  ...
}

Du könntest auch jede Zeile in ein Hashmap (assoziatives Array; array mit key-value) packen (nach split bzw. explode) und diese in einem weiteren Array speichern.
Danach könntest Du von mir aus alles nach der dritten Spalte sortieren.
(siehe usort, uksort etc. in PHP-Handbuch)

Gruß,
Michael

Antwort 7 von raben.lazarus

genial..tadellos..klappt.. vielen dank

wieder viel gelernt ;-)