[PHP] txt bestanden schrijven/uitlezen

Status
Niet open voor verdere reacties.

jordy14nl

Gebruiker
Lid geworden
21 dec 2008
Berichten
218
Halloo...

Ik heb 2scripts gemaakt
'write.php' en 'read.php' waarin ik tekst in een bestand zet en de tekst er weer uit lees.
alleen als ik tekst in de file schrijf, en daarna nog een keer komt er dit in de file te staan
Test tekst. Test tekst
en bij het uitlezen komt er helemaal niks te staan..
hoe fix je dit?
het doel hierachter is een site voor een kennis van mij die zo via een page zijn homepage tekst kan aanpassen.
PHP:
// write.php
<?php
	echo "Start";
	
	$bestand = 'test.txt';
	$tekst = "Test tekst. /n";
	
	if (is_writable($bestand)) 
	{
		if (!$handle = fopen($bestand, 'a')) 
		{
			echo "kan het bestand $bestand niet openen";
			exit;
		}

		if (fwrite($handle, $tekst) === FALSE) 
		{
			echo "kan niet scrijfen naar het bestand $bestand)";
			exit;
		}

		echo "$tekst is opgeslagen in $bestand";

		fclose($handle);
	
	}
	else
	{
		echo "kan niet schrijven in het bestand $bestand";
	}
	
?>

PHP:
// read.php
<?php
	$bestand =  "test.txt";
	
	if (file_exists($bestand)) 
	{
		$txt = fopen($bestand, "r");
		
		echo "Het bestand $bestand bestaat en is geladen";
		echo "/n";
		echo "De tekst is:";
		echo "/n";
		echo "%txt";
		
		fclose($txt);
	} 
	else 
	{
		echo "Het bestand $bestand bestaat niet";
	}
	
?>
 
Laatst bewerkt door een moderator:
PHP:
// write.php
<?php
	echo "Start";
	
	$bestand = 'test.txt';
	$tekst = "Test tekst. /n"; // dit wordt er in het bestand weggeschreven.
	
	if (is_writable($bestand)) 
	{
		if (!$handle = fopen($bestand, 'a')) // de a optie staat voor append (toevoegen)
		{
			echo "kan het bestand $bestand niet openen";
			exit;
		}

		if (fwrite($handle, $tekst) === FALSE) 
		{
			echo "kan niet scrijfen naar het bestand $bestand)";
			exit;
		}

		echo "$tekst is opgeslagen in $bestand";

		fclose($handle);
	
	}
	else
	{
		echo "kan niet schrijven in het bestand $bestand";
	}
	
?>

PHP:
// read.php
<?php
	$bestand =  "test.txt";
	
	if (file_exists($bestand)) 
	{
		$txt = fopen($bestand, "r");
		$read = fread($txt,filesize($bestand)); // dit leest het bestand daadwerkelijk uit.

		echo "Het bestand $bestand bestaat en is geladen";
		echo "/n";
		echo "De tekst is:";
		echo "/n";
		echo $read; // $ ipv % zal het uitlezen oplossen.
		
		fclose($txt);
	} 
	else 
	{
		echo "Het bestand $bestand bestaat niet";
	}
	
?>

Het script werkt dus als een trein!
 
Laatst bewerkt:
Ja, dat maakt het een stuk duidelijker.

@jordy:

Maak van de 'a' op de 10e regel eens een 'w'. Zoals T-J al even kort aanstipte staat de 'a' voor append (oftewel erachter plakken), de 'w' staat voor write. Die wist de huidige inhoud en zet de pointer gewoon aan het begin.
 
nu krijg ik, de tekst nog steeds op 1 regel alleen nu zijn die /n dingen wel weg
door dat \r\n
 
Ik heb een script gevonden dat opslaat in een text bestand wat er word ingetypt op een form.
Form.html
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Input Form</title>
</head>

<body>
<form action="process.php" method="POST" name="inputform" id="inputform">
Uw naam: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" size="50" name="field1" />
<BR>
<BR> 
Uw e-mailadres: 
<input type="text" size="50" name="field2" />
<BR>
<BR>
Uw bericht: <BR>
<textarea rows="10" cols="50" name="field3">
Typ hier uw bericht.
</textarea>
<BR>
<BR>
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

process.php
Code:
<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
$field1 = $_POST['field1'] ; 
$field2 = $_POST['field2'] ; 
$field3 = $_POST['field3'] ;
$f=fopen("file.txt","a"); 
fwrite($f,"$field1 | $field2 | $field3
 \r\n"); 
fclose($f); 
} 
?>

Waarschijnlijk is dit wat u bedoelde.




Vriendelijke groeten, Remi1995
 
hier wordt ook dat \r\n gebruikt m,aar dat werkt niet bij mij :S
 
hier wordt ook dat \r\n gebruikt m,aar dat werkt niet bij mij :S

gebruik eens in plaats van:
Code:
<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
$field1 = $_POST['field1'] ; 
$field2 = $_POST['field2'] ; 
$field3 = $_POST['field3'] ;
$f=fopen("file.txt","a"); 
fwrite($f,"$field1 | $field2 | $field3
 \r\n"); 
fclose($f); 
} 
?>

deze code:
Code:
<? 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
$field1 = $_POST['field1'] ; 
$field2 = $_POST['field2'] ; 
$field3 = $_POST['field3'] ;
$f=fopen("file.txt","a"); 
fwrite($f,"$field1 | $field2 | $field3
 \r\n"); 
fclose($f); 
} 
?>
Waarschijnlijk staat uw server zo ingesteld op <? en ?> en niet <?PHP en ?> .





Vriendelijke groeten, Remi1995
 
Alle servers horen <?php te accepteren, kan je dat uberhaubt uitzetten?

Het is juist <? wat onveilig is.
 
zei mijn maat ook al :D ,
maar effe dit

nu wil ik zo maken dat als je iets een textarea typt en dan op save drukt dat het in de file wordt opgeslagen
alleen hoe krijg je die form dan in php?
en hoe zorg je er voor dat hij alles netjes opslaat INCLUSIEF DE NIEUWE REGELS
dat het niet "hallo ik jordy ik ben 15 jaar ik woon in nederland" wordt
maar gewoon
"Hallo ik ben jordy
ik ben 15 jaar
ik woon in nederland"

dit is mijn form
PHP:
<form name="Tekst_form" method="POST" style="margin:0px">

<textarea name="Tekst_vak" style="position:absolute;left:7px;top:53px;width:345px;height:274px;z-index:3">Typ hier de tekst.</textarea>

<input name="plaats_knop" type="submit" value="Plaatsen" style="position:absolute;left:263px;top:368px;z-index:4">

</form>
en dit mijn 'write.php' script.
PHP:
<?php
    echo "Start<br/>";
    
    $bestand = 'test.txt';
    $tekst = " regel 1 \r\n regel 2 \r\n regel 3"; // dit wordt er in het bestand weggeschreven.
    if (is_writable($bestand)) 
    {	
        if (!$handle = fopen($bestand, 'w')) // de a optie staat voor append (toevoegen)
        {
            echo "kan het bestand $bestand niet openen<br/>";
            exit;
        }
 
        if (fwrite($handle, $tekst) === FALSE) 
        {
            echo "kan niet scrijfen naar het bestand $bestand)<br/>";
            exit;
        }
 
        echo "$tekst is opgeslagen in $bestand<br/>";
 
        fclose($handle);
		echo "\r\n";
    
    }
    else
    {
        echo "kan niet schrijven in het bestand $bestand<br/>";
    }
    
?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan