Forum mit PHP

Hallo,

ich habe ein kleines oder auch großes problem. ich habe ein einfaches forum mit php erstellt.

nachdem ich noch einige veränderungen im forum vorgenommen hatte, werden neue beiträge nicht in der beitraege.txt gespeichert bzw. dann angezeigt. ich vermute einen denkfehler, doch leider weiß ich momentan überhaupt nicht mehr so recht, wo der fehler noch liegen könnte.

hier mein skript:

forum.php:

<?php include ("forumfunktionen.php");
if (isset ($\_POST)) { beitrag\_hinzufuegen(); } include ("beitraege.php"); ?\> Forum Willkomen beim Forum **Sagen Sie uns Ihre Meinung!** <?php formular_anzeigen()
?\> <?php for ($i=0; $i < count ($beitrag); $i++) {
beitrag\_ausgeben ($beitrag[$i]); } ?\> forumfunktionen.php: <?php function beitrag_ausgeben ($beitrag) {
print " Betreff: "; print $leer["betreff"]."\n"; if(strlen($leer['betreff'])\>0) { echo '**'.$betreff['betreff'].'**'; } else { echo ' **Kein Betreff**'; } print " Text: "; print $beitrag["text"]."\n"; print " Autor: "; print $beitrag["autor"]."\n"; } function beitrag\_hinzufuegen () { global $betreff, $text, $autor; $texte = file ("beitraege.txt"); $text\_ohne\_nl = str\_replace ("\n", "", $text\_mit\_nl); $neuer\_text = $text; $letzter\_textindex = count ($texte)-2; if (trim($texte[$letzter\_textindex]) !=$neuer\_text) { $datei = fopen ("beitraege.txt", "a"); $betreff = $\_POST['betreff']; $text = $\_POST['text']; $autor = $\_POST['autor']; fclose ($datei); } } function formular\_anzeigen () { ?\> Betreff: Text: Autor: <?php }
?\> beitraege.php: <?php $datei = fopen ("beitraege.txt", "r");
$i = 0; while (!feof($datei)) { $beitrag[$i]["betreff"] = fgets ($datei, 1024); $beitrag[$i]["text"] = fgets ($datei, 1024); $beitrag[$i]["autor"] = fgets ($datei, 1024); $i++; } fclose ($datei); ?\> dann gibt es noch die datei beitraege.txt, in welcher die neuen beiträge gespeichert werden sollen. falls meine frage schon mal gestellt wurde, dann bitte ich um emntschuldigung. für eure tipps bin ich schon jetzt sehr sehr dankbar. grüße joanna

Hallo Joanna,

ich kann in Deinem Skript nichts entdecken, was tatsächlich in die Datei schreibt!?
Du liest die Werte aus, schreibst sie aber nicht in die Datei.
Dir fehlt sowas:

fputs($datei, $\_POST["datum"]."\n".$\_POST["autor"]."\n".$\_POST["beitrag"]."\n");

Wenn Du weitere Fragen hast, meld Dich noch mal.
Gruß, Stephan

hallo stephan,

meine datei forumfunktionen.php habe ich nun wie folgt abgeändert:

function beitrag_hinzufuegen () {
global $betreff, $text, $autor;
$neuer_text = str_replace ("\n", „“, $text);
$texte = file („beitraege.txt“);
$letzter_textindex = count ($texte)-3;
if (trim($texte[$letzter_textindex]) !=$neuer_text) {
$datei = fopen („beitraege.txt“, „a“);
fputs($datei, $_POST[„betreff“]."\n");
fputs($datei, $_POST[„text“]."\n");
fputs($datei, $_POST[„autor“]."\n");
fclose ($datei);
}
}
Leider wird immer noch nichts in die datei geschrieben. habe ich vielleicht einen zeichenfehler?

die datei forum.php habe ich wie folgt abgeändert:

<?php include ("forumfunktionen.php");
if (isset ($\_POST)) { beitrag\_hinzufuegen(); } include ("beitraege.php"); ?\> Forum Willkomen beim Forum **Sagen Sie uns Ihre Meinung!** <?php formular_anzeigen()
?\> <?php for ($i=0; $i < count ($beitrag); $i++) {
beitrag\_ausgeben ($beitrag[$i]); } ?\> vielen dank für deine schnelle antwort, hoffe du kannst mir noch ein wenig weiterhelfen.

Hallo Joanna,

zunächst mal folgendes oben in den code einfügen

error\_reporting(E\_ALL);

Damit sollten wir alle Fehlermeldungen und Warnungen angezeigt bekommen.
Wenn Du diese Änderungen umgesetzt hast, schick mir mal den Link, damit ich die Warnungen und/oder Fehlermeldungen lesen kann.

Gruß, Stephan

wo genau soll ich den code einfügen? momentan bewirkt dieser eigentlich gar nichts :frowning:

bin php-anfänger. es hat ja auch schon mal funktioniert.

einen link kann ich dir leider nicht schicken - nur per e-mail die einzelnen dateien.

gruß joanna

macht nix…
also den code oben in forum.php einfügen:

<?php ini_set('display_errors', 1);<br />error\_reporting(E\_ALL);
.
.
.

wenn man Fehler in der Programmierung gemacht hat, werden die protokolliert. Mithilfe der ini_set Methode werden die Fehler angezeigt.

Zwei Fehler habe ich schon entdeckt… bei mir läuft es inzwischen. Sieh es Dir an unter
http://trzonnek.de/workspace/forum.php

Heute habe ich leider keine Zeit mehr… vielleicht schaffe ich es morgen Dir zu schreiben, warum es bei Dir nicht funktioniert hat.
Versuch aber in jedem Fall die Fehlerausgabe zu bekommen (wie oben beschrieben). Vielleicht findest Du Deine Fehler dann selber.

Viele Grüße, Stephan

erstmal vielen dank für den code. das ist schon sehr hilfreich.
ich glaube eine fehler war, dass ich in der einen funktionen den betreff nicht definiert hatte. fehler zeit er mir momentan nicht mehr an. jedoch werden neue beiträge immer noch nicht in die textdateien geschrieben. wenn ich also einen beitrag abschicke passiert rein gar nichts. desweiteren habe ich in der datei forumfunktionen.php folgendes nun geändert, doch leider erscheint immernoch kein beitrag:
function beitrag_ausgeben ($beitrag) {
global $betreff;
print "
Betreff: „;
print $betreff[„betreff“].“\n";
if(strlen($betreff[‚betreff‘])>0)
{
echo ‚‘.$betreff[‚betreff‘].’’;
}
else
{
echo ’ Kein Betreff’;
}
print "
Text: „;
print $beitrag[„text“].“\n";
print "
Autor: „;
print $beitrag[„autor“].“\n";
print " ";
}

function beitrag_hinzufuegen () {
global $betreff, $text, $autor;
$neuer_text = str_replace ("\n", „“, $text);
$texte = file („beitraege.txt“);
$letzter_textindex = count ($texte)-3;
if (trim($texte[$letzter_textindex]) !=$neuer_text) {
$datei = fopen („beitraege.txt“, „a“);
fputs($datei, $_POST[„betreff“]."\n");
fputs($datei, $_POST[„text“]."\n");
fputs($datei, $_POST[„autor“]."\n");
fclose ($datei);
}
}