Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/02/2007, 19h30   #1
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Par défaut Ecriture sur fichier texte non effectuée

Bonsoir,

Je ne comprends pas pourquoi, le résultat n'est pas écrit dans mon fichier texte

Voici mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
if ($open = fopen($src,'r+'))
{  
	$content = fread($open, filesize($src)); 
	$handle = split("\n", $content); 
	foreach ($handle as $line)
	{  
		$line = str_replace($string,$string."_1",$line);
		echo $line;
		fputs($open,$line);
	}
fclose($open); 
}
J'ai placé un "echo" qui me montre que le traitement de "str_replace" à bien été fait.

Mais après le passage de ce script, mon fichier texte d'origine n'est pas modifié.

Mon fichier est pourtant bien ouvert en écriture me semble-t-il ?

Une idée sur la question

merci d'avance
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 19h38   #2
Membre confirmé
 
Avatar de More
 
Inscription : janvier 2007
Messages : 252
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : janvier 2007
Messages : 252
Points : 231
Points : 231
salut,

voici une fonction qui fonctionne a merveille :
Code :
1
2
3
4
5
function WriteMyFile($contenu){ 
$fp = fopen("messages.txt", "w");
$r = fwrite($fp, "$contenu"); // $contenu est le contenu que tu veux inserer
fclose($fp); 
}
Bonne chance
__________________
Agir, rectifier, remettre tout a Zero mais ne jamais reste inactif a la recherche du parfait.
More est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 20h17   #3
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Merci,

J'ai fait ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
if ($open = fopen($src,'w'))
{  
	$content = fread($open, filesize($src)); 
	$handle = split("\n", $content); 
	foreach ($handle as $line)
	{  
		$line = str_replace($string,$string."_1",$line);
		echo $line;
		fwrite($open,$line);
	}
fclose($open); 
}
Mais en mettant "w" à la place de "r+", le fichier est vide après traitement.
Si je met "r+" les enregistrements "$line" sont ajouté en fin de fichier sans retour ligne.

En fait j'aurai voulu écraser l'existant; Dois-je passer par un fichier temporaire ?

Merci
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 23h45   #4
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
normalement avec "w" c'est cencé ecraser ton fichier :/
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 09h20   #5
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Merci, je voulais faire simple, mais j'ai fini par faire comme cela et ça fonctionne.

Je n'écris pas dans mon fichier d'origine, mais j'écris dans un autre fichier que je crée par "w".

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(file_exists($destination))
{
	unlink("$destination");
}
$output = fopen($destination,'w');
if ($input = fopen($source,'r'))
{  
	$handle = file($source); 
	foreach ($handle as $line)
	{  
		$line = str_replace($string,$string."_1",$line);
		fwrite($output,$line);
	}
fclose($input); 
}
else
{ 
	// Echec à l'ouverture
	echo "Erreur : impossible d'ouvrir ".$source;
}
Merci beaucoup
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h28.


 
 
 
 
Partenaires

Hébergement Web