Txt-Datei von hinten ausgeben..
Killer03
- php
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
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
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
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..
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
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
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
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
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
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