ik wil een website waar eigenaar zelf een aantal teksten kan wijzigen. Dit doe ik door middel van een (beveiligde) pagina waar in een (of meerdere) formulier(en) teksten kunnen worden ingevuld, deze op te slaan in een bestand en op een andere pagina weer uit het bestand te lezen. Op de formulier pagina wil ik dan het formulier ook weer voorinvullen. Ik heb niet de beschikking over een database.
Nou ben ik al een heel eind, maar het lijkt alsof het bestand niet leeggegooid wordt (ondanks "$file = fopen($data, "w"); "). Elke keer als op vernieuwen wordt gedrukt wordt de tekst langer.
Ik geloof dat dit vaak met een CMS wordt opgelost maar ik wil het graag zelf weten en oplossen.

Hieronder voorbeeld code :

formulier:


<?php

$data2 = "t01_gegevens.txt";

$file2 = fopen($data2, "r");
// haal de tekst eruit
$datawaarde = fgets($file2, 4096);

// sluit het bestand weer
fclose($file2);

// toon wat er in het bestand staat
echo $datawaarde;
?> 


<form name="form1" method="post" action="t01_post.php">  
      Naam: <br><input name="Naam" type="text" value="<?php echo $datawaarde ?>"><br>  
      <textarea name="Opmerkingen" rows="7" cols="45"><?php echo $datawaarde ?></textarea><br>  
      <input type="submit" name="Submit" value="vernieuwen">  
</form>  


<?php  
include("t01_gegevens.txt");   
?>  


en post:


<?php
$Naam = '';
$Opmerkingen = '';
$Naam = $_POST["Naam"];   
$Opmerkingen = $_POST["Opmerkingen"];   
  
$data = "t01_gegevens.txt";   
$file = fopen($data, "w");   
fputs($file, "Geschreven door: $Naam<br> Opmerkingen:<i>$Opmerkingen</i><hr>");   
fclose($file);   
header('Location: t01_form.php');
?>


merci

[size=xsmall]Toevoeging op 31/12/2010 15:58:14:[/size]

bedankt weer. het is weer een stukje verder.

Ik gebruik nu file_get_contents en file_put_contents. Toch blijf ik me afvragen waarom het op die andere maniet met fopen, fread fputs enz.. niet werkt.

ook bedankt voor de dom of simplexm - links. Ik heb er naar gekeken maar zie nu nog niet wat ik er mee moet/kan.

Nog even de nieuwe code:
formulier:

<?php

// file lezen
$inhoud_filenm = file_get_contents('t01_naam.xml');
echo $inhoud_filenm;
echo "<br>";
// file lezen
$inhoud_fileop = file_get_contents('t01_opm.xml');
echo $inhoud_fileop;


?>
<hr>
<form name="form1" method="post" action="t01_post.php">
Naam: <br><input name="naam" type="text" maxlength=20 value=<?php echo $inhoud_filenm ?>><br>
Tekst: <br><textarea name="opmerkingen" rows="7" cols="45"><?php echo $inhoud_fileop ?></textarea><br>
<input type="submit" name="Submit" value="vernieuwen">
</form>
<hr>

<?php
include("t01_naam.xml");
echo "<br>";
include("t01_opm.xml");

?>


post:

<?php
$naam = '';
$opmerkingen = '';
$naam = $_POST["naam"];
$opmerkingen = $_POST["opmerkingen"];

// file lezen
//$inhoud_file = file_get_contents('t01_naam.xml');
// inhoud aanpassen
$inhoud_file .= $naam;
// file opnieuw opslaan met gewijzigde inhoud
file_put_contents ('t01_naam.xml', $inhoud_file);

// file lezen
//$inhoud_fileop = file_get_contents('t01_opm.xml');
// inhoud aanpassen
$inhoud_fileop .= $opmerkingen;
// file opnieuw opslaan met gewijzigde inhoud
file_put_contents ('t01_opm.xml', $inhoud_fileop);


header('Location: t01_form.php');
?>


Het gekke is dat in het tekst-(textarea)-veld je spaties en line-breaks kunt gebruiken, die plaatst hij mooi weer terug, maar alsje in het naam-(text)-veld spaties intikt slaat hij ze wel op in het bestand maar geeft alleen het stuk voor de spatie terug in het formulier-veld.


Reageren