inhoud file vervangen, niet toevoeren

Status
Niet open voor verdere reacties.

phobia

Terugkerende gebruiker
Lid geworden
4 sep 2006
Berichten
1.777
Ik heb een txt bestand met admin gegevens.
Ik ben al zo ver dat ik het tekst bestand opnieuw heb samen gesteld met de nieuwe gegevens.

Maar nu wil ik het oude bestand vervangen voor de nieuwe.

Ik heb het geprobeerd met fwrite, maar dat worden de nieuwe gegevens toe gevoegd en niet overschreven door de nieuwe gegevens.

Kan iemand mij opweg helpen om het goed te krijgen?

dit is wat ik gemaakt heb.
PHP:
<? 
if (!isset($_SESSION)) {
session_start();
}
//bedrijfsgegevens
$file = 'data/logfile.dat';
//bestand openen
$temp = fopen ($file, "a+");
//regels maken van bestand
$regel = explode("\r\n", file_get_contents($file));
//maken van de te vervangen regel
$i = 0;
$string = "ref";
$regel_nieuw = "";
$file_new = "";
while ($i <= $_SESSION['link']-1) 
{
	$string = "ref".$i;
	if ($regel_nieuw == "")
	{
		$regel_nieuw = $_POST[$string];
	}
	else
	{
		$regel_nieuw = $regel_nieuw.",".$_POST[$string];
	}
	$i ++;
}
//nieuw file maken
$regel[$_SESSION['line']-1] = $regel_nieuw;
foreach ($regel as $tabel) {
	if ($file_new == "")
	{
		$file_new = $tabel;
	}
	else
	{
		$file_new = $file_new."\r\n".$tabel;
	}
}
if (!fwrite($temp,$file_new))
{
echo "Kon het bestand niet bewerken!";
}
else
{
header('location: ../admin/forms/adminNAW.php?'.$_SESSION['line']-1);
}
fclose($temp);
?>
 
Als je geen andere data uit hetzelfde bestand inleest kun je het bestand eerst wissen met unlink()
PHP:
<?php
if (!isset($_SESSION)) {
session_start();
}
//bedrijfsgegevens
$file = 'data/logfile.dat';
//regels maken van bestand
$regel = explode("\r\n", file_get_contents($file));
//maken van de te vervangen regel
$i = 0;
$string = "ref";
$regel_nieuw = "";
$file_new = "";
while ($i <= $_SESSION['link']-1) 
{
    $string = "ref".$i;
    if ($regel_nieuw == "")
    {
        $regel_nieuw = $_POST[$string];
    }
    else
    {
        $regel_nieuw = $regel_nieuw.",".$_POST[$string];
    }
    $i ++;
}
//nieuw file maken
$regel[$_SESSION['line']-1] = $regel_nieuw;
foreach ($regel as $tabel) {
    if ($file_new == "")
    {
        $file_new = $tabel;
    }
    else
    {
        $file_new = $file_new."\r\n".$tabel;
    }
}
//bestand wissen
unlink($file);
//bestand openen
$temp = fopen ($file, "a+");
if (!fwrite($temp,$file_new))
{
echo "Kon het bestand niet bewerken!";
}
else
{
header('location: ../admin/forms/adminNAW.php?'.$_SESSION['line']-1);
}
fclose($temp);
?>
 
Okey thnx flitsflitsflits

dus met ulink kan ik bestanden wissen!

weer wat wijzer geworden :thumb:
 
Als je niet in hetzelfde script uit de file aan het lezen bent, kun je hem ook openen met 'w' ipv met 'a+', dan wordt ie leeggegooid en geopend.

Is je file dus wel leeg dus je kunt daarna geen file_get_contents meer doen.
 
Je kan ook in plaats van
PHP:
$temp = fopen ($file, "a+");
//regels maken van bestand
$regel = explode("\r\n", file_get_contents($file));

De "a+" in fopen betekent
Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

gebruik maken van
PHP:
//regels maken van bestand
$regel = explode("\r\n", file_get_contents($file));
$temp = fopen ($file, "w+");

De "w+" betekent
Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
Daarom moet je dan ook eerst de inhoud van het bestand lezen voor je hem opent. Als je alleen naar het bestaat gaat schrijven is zelfs "w" al genoeg
Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.

[edit]Frats was me voor[/edit]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan