• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

einfaches gästebuch

Status
Für weitere Antworten geschlossen.

ò.Ó

Neues Mitglied
hey,
ich habe gerade probiert ein ganz einfaches gästebuch zu schreiben.
dabei ist dann folgendes entstanden:
eintragen.html:

HTML:
<form action="gb.php" method="post">
  Name:<input type="text" size="17" name="name">
  Nachricht:<input type="text" size="17" name="Inhalt">
  <br><br>
  <input type="submit" value="OK">
</form>


gb.php:
PHP:
<?php
echo $_POST["name"];
?>
<?php
echo $_POST["Inhalt"];
?>
<?php
fopen('log.php', 'a');
fwrite($_POST["name"] AND $_POST["Inhalt"];  (line 9)
fclose('gb.php');
?>
<? 
include ('log.php');
?>

...PHP Parse error: parse error, unexpected ';' in C:\....\gb.php on line 9

wo steckt denn da ein fehler drin?
kann mir das vielleicht jemand sagen?
danke im vorraus,
o.O
 
Zuletzt bearbeitet von einem Moderator:
was soll denn der quatsch mit den vielen PHP-brackets? zwei reichen doch...

PHP:
<?php
echo $_POST["name"];

echo $_POST["Inhalt"];

fopen('log.php', 'a');

//wie wärs hier man mit klammer zu?
fwrite($_POST["name"] AND $_POST["Inhalt"]);

fclose('gb.php');

include ('log.php');
?>

fehlermeldungen sind dazu da, dass man sie liest...

und lern' endlich mal, code-tags einzusetzen...

Nils aka XraYSoLo
 
ok thx : )))))
aber jetzt gibts schon das nächste problem....

ddPHP Warning: Wrong parameter count for fwrite() in C:\
...\gb.php on line 8 PHP Warning: fclose(): supplied argument is not a valid stream resource in C:\....\gb.php on line 10

... thx^^
 
Schau, fopen() gibt dir einen sogenannten Handle zurück, dieser muss aufgefangen werden, beispielsweise in einer Variable:

PHP:
$dateihandle = fopen($dateiname, $mode);
Die Variable $dateiname fasst dann den Dateinamen, die Varibale $mode gibt den Modus an, in dem die Datei geöffnet werden soll, beispielsweise zum Lesen und Schreiben 'a+'. (Lesen, Schreiben, Ende der Datei, Anlegen).

fwrite() braucht jetzt als ersten Parameter den Handle, als zweiten den Inhalt, der eingetragen werden soll und als optionalen dritten Parameter eine Länge in Bytes, die nicht überschritten wird, selbst wenn der Inhalt länger als die angegebene
Byte-Anzahl ist.

PHP:
fwrite($dateihandle, $inhalt);

Das mit dem 

[php]
fwrite($_POST["name"] AND $_POST["Inhalt"]);


war Blödsinn.
Und jetzt lies mal die Fehlermeldung:

ddPHP Warning: Wrong parameter count for fwrite() in C:\
wrong parameter count for fwrite
...heißt so viel wie,
falsche Anzahl an Parametern gefunden.

Der fehler wäre also nun behoben.

...\gb.php on line 8 PHP Warning: fclose(): supplied argument is not a valid stream resource in C:\....\gb.php on line 10

Du schließt mit
PHP:
fclose()
nicht den Dateinamen sondern den Handle, also so:

PHP:
fclose($dateihandle);


Das wars auch schon.
Hoffe ich konnte helfen.

 
Zuletzt bearbeitet:
ok danke....

PHP:
<?php
echo $_POST["name"];
echo $_POST["Inhalt"];
$dateihandle = fopen(log.php, a (oder w+));
fclose($dateihandle); 
include ('log.php');
?>

ist das jetzt so richtig? (habe gerade keine gelegenheit zum testen)....
wenn das mit dem fwrite quatsch ist, versteh ich nicht, wann es dann reingeschrieben wird, denn so öffnet er die datei ja und schliesst sie danach dann einfach so wieder
thx
 
Zuletzt bearbeitet von einem Moderator:
@ matibaski, w+ setzt die Länge der Datei auf 0 Bytes, dann hat er, falls er den Inhalt nicht sichert, immer nur einen Eintrag, a+ stimmt schon.

fwrite ist kein Quatsch, aber so wie du fwrite benutzen wolltest stimmte es nicht.
 
Nein, so:
PHP:
<?php
$name = $_POST["name"];
$inhalt = $_POST["Inhalt"];
$eintragen = "Name: ".$name.", Inhalt: ".$inhalt."<br />"; // Inhalt, der eingrtragen wird
$filename = "log.php"; // Datei, in der geschrieben wird

 if(!$handle = fopen($filename,"w+")) // Prüfen ob Datei nicht bearbeitbar ist
 {
  // Wenn nicht, error ausgeben
  die ("Kann Datei {".$filename."} nicht bearbeiten!");
 }
 else // Wenn doch schreibbar
 {
  // Beschreiben
  fwrite($handle, $eintragen); 
  fclose($handle);
  echo'Inhalt eingeschrieben.
 }
?>
Also du musst den Namen und Inhalt irgendwie in eins Quetschen. Habs mal provisorisch gemacht, aber das kannst du ja anpassen.
So prüft man eben alles.


MfG, matibaski
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben