Save/Load/Write naar .txt file dmv form
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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")
?>
//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")
?>
Gewijzigd op 01/01/1970 01:00:00 door Rick de Graaf
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?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>
';
}
?>
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>
';
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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>';
?>
//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:
enz... ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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>';
?>
//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
Dat van Evert is
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)
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:
Code (php)
1
2
3
4
2
3
4
<?php // Op deze positie, dus wat hier onder staat komt direct onder jou <?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
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
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:
Nee schat, form action="' werkt prima en is beter dan action="#" en PHP_SELF.je moet ff bij
form action=""
de pagina invoeren hoe het heet
je moet er ff twee invullen
form action=""
de pagina invoeren hoe het heet
je moet er ff twee invullen
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.
Rick schreef op 07.11.2008 16:26:
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...
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...
Heb je dat foutafhandel stukkie van mij toegevoegd?
Karl schreef op 07.11.2008 16:29:
Heb je dat foutafhandel stukkie van mij toegevoegd?
Ja dat heb ik toegevoegd.
Is het anders een optie dat ik op bv pag1 het form plaatst en het bestand aanmaak, en de content laad op pag2 ?
Of moet het gewoon binnen 1 pagina kunnen lukken?
Wat zijn de rechten van het bestand?
Die stonden eerst op 664, die heb ik daarna nog even op 777 gezet, maar het maakt geen verschil....
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
$filename = 'test.txt';
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$content = $_POST['content'];
// Kunnen we schrijven naar het bestand?
// Kan dit niet, dan error
if (is_writable($filename)) {
// Open het bestand
// Kan dit niet, dan error
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file ($filename)";
exit;
}
// Schrijf de tekst uit de textarea naar het bestand
// Kan dit niet, dan error
if (fwrite($handle, $content) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
// Meld dat het schrijven is gelukt
echo "Success, wrote ($content) to file: $filename";
fclose($handle);
} else {
// Error van schrijfbaarheids check
echo "The file $filename is not writable";
}
} else {
// Open bestand en lees het uit, bestaat het bestand niet, dan wordt het gemaakt.
$handle = fopen($filename, 'a+');
// Controleer of er iets in file staat
// is deze leeg dan een size van 1 geven, bij 0 krijg je namelijk error.
if(filesize($filename) > 0){$size = filesize($filename);}else{$size = 1;}
// Maak string met inhoud van bestand
$content = fread($handle, $size);
fclose($handle);
?>
<html>
<body>
<form action="<? $_SERVER['PHP_SELF']; ?>" method="POST">
<textarea name="content" style="width: 400px; height: 400px;"><?=$content;?></textarea>
<br />
<input type="submit" value="Inhoud aanpassen" onClick="value='Opdracht wordt verwerkt...'" style="width: 400px;">
</form>
</body>
</html>
<?
}
?>
$filename = 'test.txt';
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$content = $_POST['content'];
// Kunnen we schrijven naar het bestand?
// Kan dit niet, dan error
if (is_writable($filename)) {
// Open het bestand
// Kan dit niet, dan error
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file ($filename)";
exit;
}
// Schrijf de tekst uit de textarea naar het bestand
// Kan dit niet, dan error
if (fwrite($handle, $content) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
// Meld dat het schrijven is gelukt
echo "Success, wrote ($content) to file: $filename";
fclose($handle);
} else {
// Error van schrijfbaarheids check
echo "The file $filename is not writable";
}
} else {
// Open bestand en lees het uit, bestaat het bestand niet, dan wordt het gemaakt.
$handle = fopen($filename, 'a+');
// Controleer of er iets in file staat
// is deze leeg dan een size van 1 geven, bij 0 krijg je namelijk error.
if(filesize($filename) > 0){$size = filesize($filename);}else{$size = 1;}
// Maak string met inhoud van bestand
$content = fread($handle, $size);
fclose($handle);
?>
<html>
<body>
<form action="<? $_SERVER['PHP_SELF']; ?>" method="POST">
<textarea name="content" style="width: 400px; height: 400px;"><?=$content;?></textarea>
<br />
<input type="submit" value="Inhoud aanpassen" onClick="value='Opdracht wordt verwerkt...'" style="width: 400px;">
</form>
</body>
</html>
<?
}
?>
Hoe kan ik nu zorgen dat ik meerdere textarea's en andere form elementen ook kan opslaan in hetzelfde .txt bestand?
Zou dit kunnen door meerdere variabeen weg te schrijven? (iets in deze trant:
Code (php)
--EDIT--
Ik heb dat even geprobeerd, maar dat werkte niet. Iemand misschien een idee hoe dat wel zou kunnen?
Gewijzigd op 01/01/1970 01:00:00 door Rick de Graaf
Ik denk dat je beter met een database kunt gaan werken. Die is bedoeld voor dit soort taken.
Karl schreef op 07.11.2008 15:37:
Leuk, geknipt en geplakt vanEvert de topic starter zo te zien... Bovendien klopt het ook niet allemaal...
Dat van Evert isnet effe veel beter.
Han schreef op 07.11.2008 15:22:
Leuk, geknipt en geplakt van
Dat van Evert is
Jaja, alleen toen ik typte was zijn post er nog niet :P en ik wilde hem niet zoveel voorkauwen. Er stonden wat noten bij, waar hij op moet letten. Maar goed!
PHP Newbie schreef op 07.11.2008 17:18:
Ik denk dat je beter met een database kunt gaan werken. Die is bedoeld voor dit soort taken.
Tell me more...
Met het oog op de toekomst is het een beetje de bedoeling dat een flashbestand de text leest uit het .txt bestand en dat de gebuiker dus simpel online de tekst kunnen plaatsen en deze dan in de flash komt (dit geldt dan voor 4 vensters in de flash)..
Als het puur is om dit formulier op te slaan, en de inhoud wordt ook alleen weer opgehaald door php. Gebruik dan mysql. Dat is veeel en veeel makkelijker. Mysql is namelijk voor php gemaakt, text bestanden niet bepaald.
Zoek wat mysql tutorials, als je het eenmaal door hebt gaat het heel makkelijk.