Gästebuch: Einträge hinten anhängen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
count
date
datei
daten
eintrag
email
error
fehler
gstebuch
inhalt
link eintrag
mode
neuling
sen
stehen
textdatei
tutorial
vielen dank
zeile
zeilenumbruch
-
Ich versuche gerade selber ein G?stebuch zu erstellen.
Bin allerdings auf dem Gebiet PHP noch Neuling.
Hier ist mein Script:
<?php
if (isset($absenden)){
$datei = fopen("eintraege.txt","a");
$eintrag = ereg_replace("\n","<br>",$eintrag);
$eintrag = stripslashes($eintrag);
$daten = "<br>";
if ($email != "") {
$daten .= "<a href=\"mailto:$email\">$name</a> ";
} else {
$daten .= "$name ";
}
$timestamp = time();
$datum = date("d.m.Y - H:i", $timestamp);
$daten .= " $datum";
if ($url != "" and $url != "http://") {
$daten .= "<div>Homepage: <a href=\"$url\" target=\"_blank\">$url</a></div>";
}
$daten .= "<div >$eintrag</div>";
fwrite($datei,"\n".$daten);
fclose($datei);
}
if (file_exists("eintraege.txt")){
$datei = fopen("eintraege.txt","r");
$daten = fread($datei,filesize("eintraege.txt"));
print $daten;
}
?>
Wie schaffe ich es nun, dass neue Eintr?ge nicht am Ende sondern am Anfang der Seite angezeigt werden?
Momentan werden bei dem Script neue Eintr?ge immer hinten dran geh?ngt.
Bitte gebt mir keine Links mit fertigen G?steb?chern.
Ich w?rde das lieber selber machen und so eben dazu lernen.
Vielen Dank, H2O -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ich denke mal du musst bei:
fwrite($datei,"\n".$daten);
$datei und $daten vertauschen -
ganz ehrlich: es geht zwar, aber mach dein g?stebuch mit mysql.
warum soll man sich mit textdateien und so rumqu?len, wenns auch einfach mit mysql geht..
ich glaub das problem was du hast kannst du irgendwie mit ner schleife oder so l?sen, aber wie man das genau macht wei? ich auch nicht... -
$datei und $daten vertauschen
Dann steht da:
fwrite($daten,"\n".$datei);
Funzt aber nicht:
"Warning: fwrite(): supplied argument is not a valid stream resource in /home/webpages/lima-city/h2o/html/gaestebuch.php on line 36"
Was muss ich ?ndern?
Und wie funzt so ein G?stebuch bei einer Datenbank?
H2O -
Ist doch klar. Du musst die Datei neu anlegen. Den neue Eintrag zuerst reinschreiben und die Alte Datei hinterher schreiben. Eine andere M?glichkeit sehe ich nicht.
-
hatte das problem auch mal und habs folgenderma?en gel??t:
$readfile=file("textdatei");
$data_add = "neue Daten" ### Der Eintrag (am besten als array)
for ($i=0;$i<=(count($readfile));$i++) {
$inhalt=$inhalt.$readfile[$i];}
$inhalt="$data_add
".$inhalt; ### das muss in der n?chsten zeile stehen, wegen zeilenumbruch
$datei = fopen("textdatei", "w+");
fputs($datei, $inhalt);
fclose ($datei);
kann auch seind as man bei dem zeilenunmbruch einfach \n schreiiben kann aber so funst es auf jdene fall!
damit stehen immer die neusten beitr?ge oben, aber ich rate dir lern mysql...is ganz easy und dann schreibt man einfach order by id desc und fertig;)
EDIT: noch ein tip...schreib den beitrag als array in die datei! das kannste mit dem befehl implode() machen! dann werden die array werte durch ein zeichen deiner wahl getrennt!
beim auslesen kannste das wieder r?ckg?ngig machen mit explode() -
du musst die datei mit dem mode w+ ?ffnen, dann den inhalt auslesen und dann des was davor in de datei war, und dann des neue reinschreiben.
Bin leider noch Neuling.
Habe sowas in der Art auch schon versucht, es aber nicht hinbekommen.
Also zum Auslesen fgets, oder?
Und welche Vorteile bringt mySQL?
H2O -
du kannst deine daten viel besser verwalten, auf alle daten zugreifen durch ids usw...
in textdateien hat man sp?ter nur noch durcheinander!
f?r ein gb script kommt man bei mysql denk ich mal mit 10 befehlen hin!
is echt einfach! und die probleme die du hier hast mit dem gb kommen auch nicht vor! -
hast du denn mal ausprobiert was ich dir oben geschrieben habe?
-
Wie sieht denn das ganze Script aus?
Wo muss ich das einf?gen?
Sorry, aber PHP ist eben f?r mich neu.
H2O -
<?php
if (isset($absenden)){
$readfile=file("eintraege.txt");
$eintrag = ereg_replace("\n","<br>",$eintrag);
$eintrag = stripslashes($eintrag);
if ($email != "") {
$name= "<a href=\"mailto:$email\">$name</a> ";
} else {
$name= "$name ";
}
$timestamp = time();
$datum = date("d.m.Y - H:i", $timestamp);
if ($url != "" and $url != "http://") {
$link = "<div>Homepage: <a href=\"$url\" target=\"_blank\">$url</a></div>";
}
$eintrag = array($name, $datum, $link, $eintrag);
$data_add = implode("?", $eintrag);
for ($i=0;$i<=(count($readfile));$i++) {
$inhalt=$inhalt.$readfile[$i];}
$inhalt="$data_add
".$inhalt; ### das muss in der n?chsten zeile stehen, wegen zeilenumbruch
$datei = fopen("textdatei", "w+");
fputs($datei, $inhalt);
fclose ($datei);
if (file_exists("eintraege.txt")){
$datei = fopen("eintraege.txt","r");
$daten = fread($datei,filesize("eintraege.txt"));
print $daten;
}
?>
so m?sste es gehen, habs aber nich getestet..sag einfach bescheid wenn fehlermeldungen kommen... -
Gibt leider echt eine Fehlermeldung:
"Parse error: parse error in /home/webpages/lima-city/h2o/html/gaestebuch.php on line 59"
H2O -
kannst du die line mal posten?
-
M?sste so funktionieren:
<?php
$file = "eintreage.txt";
if (isset($absenden)){
$readfile=file($file);
$eintrag = ereg_replace("\n","<br>",$eintrag);
$eintrag = stripslashes($eintrag);
if ($email != "") {
$name= "<a href=\"mailto:$email\">$name</a> ";
} else {
$name= "$name ";
}
$timestamp = time();
$datum = date("d.m.Y - H:i", $timestamp);
if ($url != "" and $url != "http://") {
$link = "<div>Homepage: <a href=\"$url\" target=\"_blank\">$url</a></div>";
}
$eintrag = array($name, $datum, $link, $eintrag);
$data_add = implode("?", $eintrag);
for ($i=0;$i<=(count($readfile));$i++) {
$inhalt=$inhalt.$readfile[$i];}
$inhalt= $data_add."\n".$inhalt;
$datei = fopen($file, "w+");
fputs($datei, $inhalt);
fclose ($datei);
if (file_exists($file)){
$datei = fopen($file,"r");
$daten = fread($datei,filesize($file));
print $daten;
}
?>
W?rde ich aber mit einer Datenbank machen, ist nicht so umst?ndlich. -
@julian182:
Das ist diese Zeile:
"</html>" Was hat das zu bedeuten?
@trueweb:
Auch da tritt ein Fehler auf.
Die Zeile ist wieder die letzte (auch "</html>").
Verstehe nicht warum das passiert.
Jemand von euch?
H2O
// edit
Ich habe mir jetzt mal eine Datenbank ersteigert.
K?nnte mir jetzt vielleicht mal jemand den Code sagen, wie der mit Mysql aussieht? -
Schau mal in den Tutorials nach, oder kauf dir ein buch... alles erkl?ren, und scripten k?nnen wir nicht... -.-
zu dem problem: mach vor "?>" ein "{" und dr?cke enter -
Ja danke.
Wenn ich "}" hinschreibe, dann tritt kein Fehler mehr auf, allerdings habe ich das Problem das keine Eintr?ge mehr angef?gt werden.
Aber naja. Dann werde ich das wohl selber versuchen zu l?sen.
Sorry. Ich war wohl wirklich etwas zu viel erwartend.
H2O -
Auf http://old.quellcodes.de gibt es einige Tutorials zu MySQL. EInfach mal schauen. Durch diese Tuts habe ich ?brigens auch MySQL gelernt :D
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage