Gästebuch
Michy
- php
Guten Abend zusammen
Ich habe ein Gästebuch mit PHP programmiert. Mit einer Text-Datei als Beitragsspeicherung.
Es funktionniert alles schön, nur gibt es da etwas.
Ich möchte, dass die aktuellste Nachricht oben steht. Ich habs mal versucht mit r+ beim öffnen zum schreiben der Text-Datei, aber dabei wird ein Teil der Datei überschrieben.
Ich hab auch schon versucht mit Arrays beim auslesen der Datei, was auch nicht funktionniert hat.
Vielen Dank für eure Hilfe
Gruss aus Winterthur(CH) Michy
Hier das auslesen mittels Arrays:
Zu beachten ist, ein Beitrag benötigt 7 Zeilen und da ich am Schluss der Nachrichten anfangen will fange ich mit ausgeben mittels $array_a zu hinterst an.
Falls jemand den Link möchte, notiere ich ihn gerne ins Forum.
$B1 = fopen("gb.txt","r");
$array_a=0;/*Start-Arraywert*/
while(!feof($B1)){
$Email = fgets($B1);
$Name = fgets($B1);
$Vorname = fgets($B1);
$Wann = fgets($B1);
$Webseite = fgets($B1);
$Wohnort = fgets($B1);
$Kommentar = fgets($B1);
$Beitrag=array($Email,$Name,$Vorname,$Wann,$Webseite,$Wohnort,$Kommentar);/*Zeilen in Arrays*/
$array_a++;
}
$schreiben=1;/*Variable zum auslesen der Beitraege. Startwert 1, damit while schleife gestartet wird*/
while($schreiben!=0){
$schreiben=$array_a-7;/* zu erstem der 7 Arrays des Beitrages */
$Webseite_ja=$Beitrag[$schreiben+4];/* Webseite-Arrays ausfindig machen */
if($Webseite_ja!="1"){ /*überprüfen, ob eine Webseite angegeben ist. */
print(
"
<tr><td><hr size='1'></td></tr>
<!-- #############Beitrag############# -->
<tr><td>von <a href='mailto:".$Beitrag[$schreiben]."'>".$Beitrag[$schreiben+1]." ".$Beitrag[$schreiben+2]."</a> am ".$Beitrag[$schreiben+3]."</td></tr>
<tr><td>Homepage: <a href='".$Beitrag[$schreiben+4]."' target='_blank'>".$Beitrag[$schreiben+5]."</a></td></tr>
<tr><td>Wohnort: ".$Beitrag[$schreiben+6]."</td></tr>
<tr><td><br></td></tr>
<tr><td>".$Beitrag[$schreiben+7]."</td></tr>
<tr><td><br></td></tr>
<!-- #############ENDE Beitrag############# -->"
);
}
else
{
print(
"
<tr><td><hr size='1'></td></tr>
<!-- #############Beitrag############# -->
<tr><td>von <a href='mailto:".$Beitrag[$schreiben+1]."'>".$Beitrag[$schreiben+2]." ".$Beitrag[$schreiben+3]."</a> am ".$Beitrag[$schreiben+4]."</td></tr>
<tr><td>Homepage: [keine Angabe]</td></tr>
<tr><td>Wohnort: ".$Beitrag[$schreiben+6]."</td></tr>
<tr><td><br></td></tr>
<tr><td>".$Beitrag[$schreiben+7]."</td></tr>
<tr><td><br></td></tr>
<!-- #############ENDE Beitrag############# -->"
);
}
$schreiben=$array_a-7;
}
fclose($B1);
Hallo,
der Trick liegt beim speichern.
Du füllst bei Formular alles aus uns dann sendest du die Daten an speichern.php
speichern.php liest dann zuerst die alte Datei aus.
Dann speicherst du mit dem Modus w den neuen Eitnrag in die text datei, und dann das, was vorher in der datei stand.
Das sieht ca. so aus.
<?php
...
fwrite($userdatei, $neuereintrag);
fwrite($userdatei, $alte eintraeage);
?>
MFG
Andavos
Hallo
Vielen Dank für deine Antwort.
Auch danke an dir wahsaga.
Gruss Michy
hi,
Ich möchte, dass die aktuellste Nachricht oben steht.
alles in ein array einlesen und dieses anschliessend mit array_reverse() umdrehen wäre eine weitere möglichkeit - die von Andavos genannte ist allerdings in meinen augen die bessere.
gruss,
wahsaga