Matze: Neue Beiträge zuerst anzeigen

ich habe ein Gästebuch gebaut und habe ein weiteres Problem
Immer wenn jemand eine neue Nachricht schreibt dann erscheint die neu geschriebene Nachricht ganz unten ( natürlich soll sie ja oben erscheinen ).

Wie kann ich das ändern !
Ich poste hier mal das Script
__________________________________________________
<?php
if($_POST['sent']==1)
{
$_Post['name']=str_replace('~','',strip_tags(trim($_POST['name'])));

$_Post['betreff']=str_replace('~','',strip_tags(trim($_POST['betreff'])));

$_Post['message']=str_replace('~','',strip_tags(trim($_POST['message'])));

$_Post['email']=str_replace('~','',strip_tags(trim($_POST['email'])));

If(!$_POST['name']){$fehler.="Bitte geben Sie ihren Namen an <br>";}

If(!$_POST['email']){$fehler.="Bitte geben sie ihre Email ein  <br>";}

If(!$_POST['betreff']){$fehler.="Bitte geben Sie den Betreff an <br>";}

If(!$_POST['message']){$fehler.="Bitte geben Sie eine Nachricht ein <br>";}

if($fehler){$fehler="<h6><font face=arial><font color=red>".$fehler."</font></font></h6>";}
}

if($_POST['name'] AND $_POST['betreff'] AND $_POST['message'] AND $_POST['email'])
{
//$_POST['message']=nl2br($_POST['message']);
$t1=chr(10);
$t1=chr(13);

$_POST['message']=str_replace($t1,'<br>',$_POST['message']);

$_POST['message']=str_replace($t2,'<br>',$_POST['message']);

$comment=fopen('gast.txt','a');
$ausgabe.="~#name#~<a href="mailto:".$_POST['email']."">".$_POST['name']."</a>~#betreff#~".$_POST['betreff']."~#message#~".$_POST['message']."~#date#~".$_POST['date']."~#end#~
";

fputs($comment,$ausgabe);

fclose($comment);
$_POST['name']="";
$_POST['email']="";
$_POST['date']="";
$_POST['betreff']="";
$_POST['message']="";

$nachricht = "Neuer User hat gepostet";
mail('muster.t@gmx.de', 'GB:'.$_POST['betreff'], $_POST['message']);

}
?>
<html>
<head>
<title>Gästebuch</title>
<meta http-equiv="content-type" content="application/xhtml+xml;charset=utf-8" />
</head>
<body>

<font face="arial"><b><font size=2><align="left"><font color=green></font></font></font></b>
<?php echo$fehler; ?>
<div align="left"><form  action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="sent" value="1">
<p><font face=arial><font size=2>Name:</font></font><br>
<input type="text" name="name" size="30" value="<?php echo $_POST['name']; ?>">
<br>
<font face=arial><font size=2>Email:</font></font><br>
<input type="text" name="email" size="30" value="<?php echo $_POST['email']; ?>">
<br>
<font face=arial><font size=2>Betreff:</font></font><br>
<input type="text" name="betreff" size="30" value="<?php echo $_POST['betreff']; ?>">
<br>
<font face=arial><font size=2>Nachricht:</font></font><br>
<textarea name="message" rows="10" cols="30" wrap="virtual">
<?php echo $_POST['message']; ?>
</textarea>
</p>

<input type="submit" name="Button" value="abschicken">

</font>
</form>
</div>
<?php

$gast = @file_get_contents("gast.txt");
$gast = preg_replace("/~#name#~/", "<fieldset><legend>", $gast);
$gast = preg_replace("/~#betreff#~/", "  - ", $gast);
$gast = preg_replace("/~#message#~/", "</legend>\n", $gast);
$gast = preg_replace("/~#date#~/", date("d.m.Y"), $gast);
$gast = preg_replace("/~#end#~/", "</fieldset>", $gast);

echo $gast;
?>

</body></html>
______________________________________

Ich weiß echt nicht wo ich das ändern kann !

  1. Ich weiß echt nicht wo ich das ändern kann !

    Entweder liest du die Datei mit den Einträgen erst aus und drehst die Reihenfolge um. Dazu hilft dir file() und array_reverse()

    Alternativ schreibst du den neuen Eintrag einfach oben in die Datei. Also Datei auslesen, ersten Eintrag reinschreiben, anschliessend die restlichen Beiträge dahinterschreiben.

    1. könntest du mir da vllt ein beipiel zeigen ! weil ich auf dem Geiet php noch nicht so der Profi bin !

      1. Hallo

        könntest du mir da vllt ein beipiel zeigen ! weil ich auf dem Geiet php noch nicht so der Profi bin !

        Mit Codebeispielen wird hier sehr sparsam umgegangen, wie verkaufen hier keinen Fisch sondern die Angel. Multis Hinweis: "Dazu hilft dir file() und array_reverse()" ist aber schon mal sehr gut. Du schreibst die Einträge weiter wie bisher in die Datei. Ein neuer Eintrag wird an das Ende der Datei geschrieben.

        Wenn du den Inhalt der Datei in deine Seite einbinden willst und sie dazu ausliest, ist diese Reihenfolge nicht gewollt und sollte _dann_ auch geändert werden. Mit file liest du die Datei zeilenweise in ein Array (dazu muss natürlich jeder Eintrag in _einer_ Zeile vorliegen). Diese kannst du nun sortieren oder einfach mit array_reverse umdrehen, wie es Multi vorschlug.

        Tschö, Auge

        --
        Die deutschen Interessen werden am Liechtenstein verteidigt.
        Veranstaltungsdatenbank Vdb 0.2
      2. Hello,

        könntest du mir da vllt ein beipiel zeigen ! weil ich auf dem Geiet php noch nicht so der Profi bin

        Neue (leere) Datei aufmachen.
        Neuen Datensatz reinschreiben.
        Alte ("volle") Datei hinten anhängen.
        Alte (fast "volle") Datei löschen.
        Neue (volle) Datei umbenennen in alten Dateinamen.

        Das ganze System macht aber Denkprobleme bei gleichzeitigen Zugriffsversuchen.
        Es muss also vermieden werden, dass sich jemand die alte volle Datei holt, während jemand anderes sie bereits in bearbeitung genommen hat. Daher ist die Methode, mit Append etwas anzuhängen an vorhandene Dateien in üblichen Dateisystemen die schlauere. Da fängt das Betriebssystem bereits die Race Condition ab.

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de