Goedemiddag,

Sorry als ik in de herhaling val met dit topic, maar met de dingen die ik kan vinden kom ik er niet uit of snap ik het simpelweg niet.

Ik wil graag een formulier maken en ik wil dat hij die gegevens opslaat in een .txt bestand (het liefst per formulier item in variabele in 1 .txt document als dat mogelijk is).

Heb al het een en ander kunnen vinden over lezen en schrijven van text bestanden, maar ik kom er niet uit.

Ik heb onderstaande .php script nu, en wat hij nu doet is het lezen van een .txt bestand die hij aanmaakt. De inhoud hiervan wordt nu gegeven door het script, ik wil dus dat deze wordt gegeven door het ingevulde formulier.

Hoe kom ik nu verder naar mijn uiteindelijke doel?

Alvast bedankt!

Script:
<?php
//Het ophalen en het schrijven van het bestand
$file = 'test.txt';
$content = 'Hier is de content van het bestand';
$fhandler = fopen($file, "a");
fwrite($fhandler, $content);
fclose($fhandler);

//Het lezen van het bestand
$file = 'test.txt';
$fhandler = fopen($file, "r"); // of $fhandler = fopen($file, "rb");
$fileContents = NULL; // Zeker zijn dat de variabele leeg is, omdat hier content aan TOEGEVOEGD wordt.
while (!feof($fhandler))
$fileContents .= fread($fhandler, 4096); // 4KiB uitlezen. Let op het . voor het = teken. Content wordt TOEGEVOEGD aan de variabele, en dus niet vervangen!!!
fclose($fhandler); // Het bestand weer netjes afsluiten.
// $fileContents bevat nu de inhoud van het bestand in string-vorm

//Het laten zien van de inhoud van het bestand
echo ("$fileContents")
?>
Alstublieft.

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	if(empty($_POST['content']))
	{
		echo 'Je moet alle velden invullen!<br />	
			  <form action="" method="post">
				<textarea  name="rapport"  rows="5"  cols="30"></textarea><br />
				<input type="submit" value="Toevoegen"><br />
			  </form>
			 ';
	}
	else
	{
		//$content = 'Hier is de content van het bestand'; #Dit halen we weg!
		$file = 'test.txt';
		$fhandler = fopen($file, "a");
		fwrite($fhandler, $_POST['content']); //Hier is $content veranderd in POST
		fclose($fhandler);

		$file = 'test.txt';
		$fhandler = fopen($file, "r"); // of $fhandler = fopen($file, "rb");
		$fileContents = NULL; // Zeker zijn dat de variabele leeg is, omdat hier content aan TOEGEVOEGD wordt.
		while (!feof($fhandler))
		$fileContents .= fread($fhandler, 4096); // 4KiB uitlezen.  Let op het . voor het = teken.   Content wordt TOEGEVOEGD aan de variabele, en dus niet vervangen!!!
		fclose($fhandler);
		// $fileContents bevat nu de inhoud van het bestand in string-vorm
		
		echo $fileContents;
	}
}
else
{
	echo 'Je moet alle velden invullen!<br />	
			<form action="" method="post">
				<textarea  name="rapport"  rows="5"  cols="30"></textarea><br />
				<input type="submit" value="Toevoegen"><br />
			</form>
		 ';
}
?>
Even wat notes:

<?php
//Het ophalen en het schrijven van het bestand
$file = 'test.txt';
$content = 'Hier is de content van het bestand';
$fhandler = fopen($file, "a"); // de a is van append, dus niet schrijven maar toevoegen.
fwrite($fhandler, $content);
fclose($fhandler);

//Het lezen van het bestand
$file = 'test.txt';
$fhandler = fopen($file, "r"); // of $fhandler = fopen($file, "rb");
$fileContents = NULL; // Zeker zijn dat de variabele leeg is, omdat hier content aan TOEGEVOEGD wordt.
while (!feof($fhandler))
$fileContents .= fread($fhandler, 4096); // 4KiB uitlezen. Let op het . voor het = teken. Content wordt TOEGEVOEGD aan de variabele, en dus niet vervangen!!!
fclose($fhandler); // Het bestand weer netjes afsluiten.
// $fileContents bevat nu de inhoud van het bestand in string-vorm

//Het laten zien van de inhoud van het bestand
echo ("$fileContents") // Dit kan natuurlijk gewoon echo $fileContents; wat veel korter is.

// Wat je hierna kan doen is dit:
echo '<form action="?action=edit">';
echo '<textarea name="x" cols="50" rows="5">'.$fileContents.'</textarea>';
echo '<input type="submit" name="y" value="doe iets" />';
echo '</form>';
?>

enz... ;)
Han schreef op 07.11.2008 15:22
Even wat notes:

<?php
//Het ophalen en het schrijven van het bestand
$file = 'test.txt';
$content = 'Hier is de content van het bestand';
$fhandler = fopen($file, "a"); // de a is van append, dus niet schrijven maar toevoegen.
fwrite($fhandler, $content);
fclose($fhandler);

//Het lezen van het bestand
$file = 'test.txt';
$fhandler = fopen($file, "r"); // of $fhandler = fopen($file, "rb");
$fileContents = NULL; // Zeker zijn dat de variabele leeg is, omdat hier content aan TOEGEVOEGD wordt.
while (!feof($fhandler))
$fileContents .= fread($fhandler, 4096); // 4KiB uitlezen. Let op het . voor het = teken. Content wordt TOEGEVOEGD aan de variabele, en dus niet vervangen!!!
fclose($fhandler); // Het bestand weer netjes afsluiten.
// $fileContents bevat nu de inhoud van het bestand in string-vorm

//Het laten zien van de inhoud van het bestand
echo ("$fileContents") // Dit kan natuurlijk gewoon echo $fileContents; wat veel korter is.

// Wat je hierna kan doen is dit:
echo '<form action="?action=edit">';
echo '<textarea name="x" cols="50" rows="5">'.$fileContents.'</textarea>';
echo '<input type="submit" name="y" value="doe iets" />';
echo '</form>';
?>

enz... ;)

Leuk, geknipt en geplakt van Evert de topic starter zo te zien... Bovendien klopt het ook niet allemaal...
Dat van Evert is net effe veel beter.
Heel erg bedankt!

Ik heb het script van Evert geprobeert:

Ik krijg wel een textarea en een button, maar na het toevoegen krijg ik geen content terug, ook wordt er geen .txt file gemaakt op mijn server.

Hoe kan dit?

(Het script van Han doet helemaal niets)
Rick schreef op 07.11.2008 16:08
Heel erg bedankt!

Ik heb het script van Evert geprobeert:

Ik krijg wel een textarea en een button, maar na het toevoegen krijg ik geen content terug, ook wordt er geen .txt file gemaakt op mijn server.

Hoe kan dit?

(Het script van Han doet helemaal niets)

Dat script van Han is slecht, plaatst eens:
<?php // Op deze positie, dus wat hier onder staat komt direct onder jou <?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
je moet ff bij
form action=""

de pagina invoeren hoe het heet
je moet er ff twee invullen
Nick schreef op 07.11.2008 16:18
je moet ff bij
form action=""

de pagina invoeren hoe het heet
je moet er ff twee invullen

Nergens voor nodig, is valid html en werkt gewoon.
Dat er geen content terug komt betekend dusdat er wat bij de php mis gaat, waarschijnlijk geen schrijf recht o.i.d.
Nick schreef op 07.11.2008 16:18
je moet ff bij
form action=""

de pagina invoeren hoe het heet
je moet er ff twee invullen
Nee schat, form action="' werkt prima en is beter dan action="#" en PHP_SELF.
ik heb bij de form action de naam van mijn pagina toegevoegd (beide form codes).

Ik denk dat ik de code snap (Hij kijkt of er een .txt bestand is, anders komt er een form. Is er wel een .txt bestand dan laat hij deze zien, (please correct me if I'm wrong))

Ook krijg ik geen error terug, en er wordt nog steeds geen .txt bestand aangemaakt...
Je pagina heeft waarschijnlijk niet voldoende rechten zoals Karl al zei. Overigens is een beetje fouthandeling niet verkeerd, omdat je script er nu gewoon vanuit gaat dat alles goed gaat.

Reageren