Killer03: Txt-Datei von hinten ausgeben..

Hi,

ich hab ein ganz simples Gästebuch gemacht... Nun ist das Problem, dass die neuesten Nachrichten immer ganz hinten erscheinen.. Wie kann ich den Code umschreiben, sodass erst die neuesten Nachrichten ausgegeben werden ....

Hier der jetzige Code...

<?

$dateiname = "guestbook.dat";
If ($new_name AND $new_email AND $new_input <> "")
  write_input($new_name,$new_email,$new_input,$dateiname);
read_file($dateiname);

function write_input($new_name,$new_email,$new_input,$dateiname)
{
$fd = fopen($dateiname,"a");
fwrite ($fd,'<center><h3><u>'.$new_name.' '.'('.$new_email.')'.'</center></h3></u>'.'<br>'.$new_input.'<br><center><hr></center><br>');

fclose ($fd);
}

function read_file($dateiname)
{
$fd = fopen($dateiname,"r");
while (!feof($fd))
{
$zeile = fgets($fd,1000);
echo $zeile . "<br>";
}
fclose($fd);
}

?>

Wie kann ich nun realisieren, dass die Datei von hinten ausgegeben wird, also die neuesten Nachrichten ganz oben stehen?

Danke

Killer03

  1. hi,

    ich hab ein ganz simples Gästebuch gemacht... Nun ist das Problem, dass die neuesten Nachrichten immer ganz hinten erscheinen.. Wie kann ich den Code umschreiben, sodass erst die neuesten Nachrichten ausgegeben werden ....

    lese die datei mit file() in ein array ein (ergibt einen eintrag pro zeile), un drehe dieses vor dem ausgeben in einer schleife mit array_reverse() um, http://www.php.net/manual/de/function.array-reverse.php.

    gruss,
    wahsaga

    1. Hi,

      das hatte ich auch so vor aber n Freund meinte, dass dafür jeder Eintrag in einer eigenen Zeile stehen... Aber bei mir ist dies der Fall... Wie kann ich das denn machen, dass jeder Eintrag in einer einzelnen Zeile steht? Hier der Auszug den ich schon etwas verändert hab...

      [...]
      function read_file($dateiname)
      {
      $fd = fopen($dateiname,"r");
      $array = file($dateiname);
      $var = array_reverse($array);

      <-- wie mach ich jetzt die schleife???? for oder foreach schleife?

      fclose($fd);
      }

      [...]

      Kannst du mir vll etwas helfen ..?

      Danke Killer03

      1. denk doch mal einfach ein wenig um...
        wie wär's denn wenn Du die Datei einfach rückwärts aufbaust?
        Also:
        Daten aus dem Formular lesen
        Datei einlesen und in eine Variable schreiben.
        Datei NEU schreiben und zwar als $Formdaten.$AlteDatei

        ... nur so 'ne Idee..

        1. Hi...

          *lol* die Idee ist ja nicht schlecht ... Aber wie realisier ich das als PHP Newbie ... Kannst du das etwas genauer erklären wie ich das machen soll?

          Danke

          Killer03

          1. hi,

            *lol* die Idee ist ja nicht schlecht ... Aber wie realisier ich das als PHP Newbie ... Kannst du das etwas genauer erklären wie ich das machen soll?

            am besten, in dem du dir erstmal ein paar grundlegende kenntnisse aneignest.

            handbuch: http://www.php.net/manual/de
            ganz nettes einsteiger-tutorial: http://www.schattenbaum.net/php

            gruss,
            wahsaga

  2. Hallo,
    das geht glaub ich nicht, aber schreib die neusten Beiträge doch nach vorne.

    Wenn du eine Erklärung brauchst, schau mal hier:
    http://www.rpgcommunity.de/clanwissen/p_e_gb.php

    Wichtig für dich ist Schritt 2

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
  3. Probier' mal folgendes als Grundgerüst, mein erstes Gästebuch hat so funktioniert:

    <?php

    // Eintrag schreiben ($username, $usermail, $usermessage kommen vom Formular)

    $message="<div>";
    $message.="$username, ";
    $message.="<a href='mailto:$usermail'>$usermail</a><br /><br />";
    $message.=nl2br(htmlentities(stripslashes($usermessage)));
    $message.="</div>";
    $message.="<!-- End_Of_Message //-->\n\n"; // Trenner - Ende des Eintrags

    @ $file=fopen("... Pfad zur Textdatei ...","a") or die("An error occured!");
    fwrite($file,$message);
    fclose($file);

    ?>

    <?php

    // Einträge auslesen

    $content="";

    @ $file=fopen("... Pfad zur Textdatei ...","r") or die("An error occured!");

    while(!feof($file)) {
     $content.=fgets($file,1000);}

    fclose($file);

    $message=explode("<!-- End_Of_Message //-->",$content); // Textdatei in Array zerlegen

    krsort($message); // Feldnamen des Arrays in absteigender Reihenfolge sortieren

    foreach($message as $var) {
     echo $var;}

    ?>

    Mit 'ner MySQL-Datenbank geht's aber wesentlich einfacher und komfortabler!

    Gruß,
    Kurt

    1. Hi,

      danke für die Hilfe.. Ist es mit ner MySQL Datenbank einfacher?? Evtl versuche ich es dann mal mit ner mySQL Datenbank ..

      Cu

      Killer03

      1. Ist es mit ner MySQL Datenbank einfacher??

        Meiner Meinung nach - ja! Du legst einfach einen Datensatz innerhalb der Tabelle an,
        der mit einen MySQL-Timestamp oder einen UNIX-Timestamp gefüllt wird, und danach
        sortierst Du dann. (select * from 'tabellenname' order by 'timestampspalte' desc)

        http://www.mysql.com/doc/en/Date_and_time_types.html
        http://www.mysql.com/doc/en/Sorting_rows.html
        http://de3.php.net/manual/en/function.time.php