Hallo, ik heb geprobeert zelf een shoutbox te maken, waarvan de gegevens worden opgeslagen in een .txt bestand. Maar als ik nu iets invul in de shoutbox, komen de vorige berichten er steeds dubbel in de staan. Weet iemand hoe dit kan?? Dit is de code:

<html>
<head>
<title>Shoutbox</title>
</head>
<body bgcolor="9370db">
<h2><center>Shoutbox...</center></h2>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
<?php if(isset($foutmelding)) { echo "<b>$foutmelding</b>"; } ?>
Uw naam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: <input type="text" name="naam"><br>
Uw e-mailadres: <input type="text" name="mail"><br>
Uw bericht:<br>
<textarea rows="5" cols="50" name="commentaar">Typ hier uw bericht...</textarea><br>
Waardering over deze website:<br>
<select name="punt">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option selected="selected">5</option>
</select><br>
<input type="reset" value="Maak alle velden leeg">
<input type="submit" value="Voeg bericht toe">
</form>
<hr size="3">
</body>
</html>

<?php
if(isset($_POST["naam"])) {
if($_POST["naam"] != "" && $_POST["mail"] != "") {
$pointer=fopen("shoutbox.txt","r+");
$oud=fread($pointer,filesize("shoutbox.txt"));
$mail='<a href="mailto:' . $_POST["mail"] . '>' . $_POST["mail"] . '</a>';
$datum=date("j.n.Y");
$commentaar=htmlspecialchars($_POST["commentaar"]);
$commentaar=stripslashes($commentaar);
$commentaar=nl2br($commentaar);
$geschreven=$_POST["naam"] . " (" . $_POST["mail"] . ") schreef op " . $datum . " het volgende:<br>\n
<b>" . $commentaar . "</b><br>\n
Punt: <b>" . $_POST["punt"] . "</b>\n
<hr>";
fputs($pointer,"$oud");
rewind($pointer);
fputs($pointer,"$geschreven\n");
}
else {
$foutmelding="U heeft niet alle velden ingevuld!";
}
}
readfile("shoutbox.txt");
?>
Kan je code-tags gebruiken?

En wat houdt je tegen om MySQL te gebruiken, dit is veel makkelijker in het beheer en onderhoud.
Niets, maar ik ben bezig met het leren van php, dus ik wil dan ookm leren hoe je in een bestand alles kan opslaan....
Maar waar zit de fout dan ergens??
Zie mijn vorige reactie.
Je moet je code even tussen tags plaatsen zoals aar zegt.

Anders kunnen we er niet veel van lezen.
[code] en [/code]

<html>
<head>
<title>Shoutbox</title>
</head>
<body bgcolor="9370db">
<h2><center>Shoutbox...</center></h2>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
<?php if(isset($foutmelding)) { echo "<b>$foutmelding</b>"; }
?>
Uw naam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: <input type="text" name="naam"><br>
Uw e-mailadres: <input type="text" name="mail"><br>
Uw bericht:<br>
<textarea rows="5" cols="50" name="commentaar">Typ hier uw bericht...</textarea><br>
Waardering over deze website:<br>
<select name="punt">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option selected="selected">5</option>
</select><br>
<input type="reset" value="Maak alle velden leeg">
<input type="submit" value="Voeg bericht toe">
</form>
<hr size="3">
</body>
</html>


<?php
if(isset($_POST["naam"])) {
    if($_POST["naam"] != "" && $_POST["mail"] != "") {
        
        $pointer=fopen("shoutbox.txt","r+");
        
        $oud=fread($pointer,filesize("shoutbox.txt"));
        
        $mail='<a href="mailto:' . $_POST["mail"] . '>' . $_POST["mail"] . '</a>';
        
        $datum=date("j.n.Y");
        $commentaar=htmlspecialchars($_POST["commentaar"]);
        $commentaar=stripslashes($commentaar);
        $commentaar=nl2br($commentaar);
        $geschreven=$_POST["naam"] . " (" . $_POST["mail"] . ") schreef op " . $datum . " het volgende:<br>\n
                     <b>" . $commentaar . "</b><br>\n
                     Punt: <b>" . $_POST["punt"] . "</b>\n
                     <hr>";
        fputs($pointer,"$oud");
        rewind($pointer);
        fputs($pointer,"$geschreven\n");
    }
    else {
        $foutmelding="U heeft niet alle velden ingevuld!";
}
}
readfile("shoutbox.txt");
?>


[size=xsmall]Toevoeging op 09/06/2011 12:23:20:[/size]

Zo dus
Oke dank je,
zien jullie nu ergens een fout zitten??
Waarom gebruik je geen database? Dat werkt veel makkelijker.

Om te kijken of er gepost is doe je:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Er is gepost
}
?>

ook moet je $vars buiten quotes doen dus:

<?php
$var = 'hoi';

echo $var;
// ipv
echo "$var";
?>
Vincent Huisman op 09/06/2011 13:29:45

Waarom gebruik je geen database? Dat werkt veel makkelijker.

Om te kijken of er gepost is doe je:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Er is gepost
}
?>

ook moet je $vars buiten quotes doen dus:

<?php
$var = 'hoi';

echo $var;
// ipv
echo "$var";
?>


Niets, maar ik ben bezig met het leren van php, dus ik wil dan ookm leren hoe je in een bestand alles kan opslaan....
Maar waar zit de fout dan ergens??


Reageren