Page 1 sur 1

Renommer un fichier avant modification

Posté : 18 mai 2012, 16:44
par Damien34
Bonjour,

Je suis en train de travailler sur le code d'un script permettant de modifier un fichier.

Mais je cale sur une partie du code.

Ce que je souhaite :
- afficher le document à modifier et pouvoir le modifier dans un formulaire (fichier.txt),
- enregistrer la version d'origine avec un nouveau nom "fichier.txt.bak",
- enregistrer le document modifier avec le nom d'origine : fichier.txt,

Ouvrir, modifier et enregistrer c'est bon... mais changer le nom avant modification j'arrive pas.

Voilà mon code de base :
$file="fichier.txt";

//Si le formulaire n'a pas était validé
if(!$_POST['submit']) {

$contenu = fread(fopen($file, "r"), filesize($file)); 

echo '<FORM method=post action="">';
echo '<TEXTAREA cols="50" rows="20" name="fichier">';

//On affiche le contenu du fichier "$file"
echo $contenu;

echo '</TEXTAREA>';
echo '<INPUT type="submit" name="submit" value="Envoyer">';

//On ferme le fichier
//fclose($file);

}
//Si le formulaire à était validé
elseif($_POST['submit']) {

$fp = fopen($file, "w");
$contenu2 = $_POST["fichier"];
fputs ($fp, $contenu2);
fclose ($fp);

}
Merci pour votre aide, si vous avez des clefs pour que je puisse avancer.

Cdt.

Re: Renommer un fichier avant modification

Posté : 18 mai 2012, 17:03
par Damien34
Désolé pour le bruit, j'ai réussi (finalement).

Voici mon code commenté :
$file="fichier.txt";

//Si le formulaire n'a pas était validé
if(!$_POST['submit']) {

//On va lire tout le fichier, ouverture uniquement en lecture (r) et jusqu'à la fin du fichier (filesize)
$contenu = fread(fopen($file, "r"), filesize($file)); 

echo '<FORM method=post action="">';
echo '<TEXTAREA cols="50" rows="20" name="fichier">';

//On affiche le contenu du fichier "$file"
echo $contenu;

echo '</TEXTAREA>';
echo '<INPUT type="submit" name="submit" value="Envoyer">';

//On ferme le fichier
//fclose($file);

}
//Si le formulaire à était validé
elseif($_POST['submit']) {

//On renomme le fichier "$file" en "$file.back" afin d'avoir une version sauvegardé avant modification
if(rename($file, $file.'.back')){ 
	echo 'Sauvegarde ok de '.$file.'.back<br />'; 
}
else{
	echo 'Sauvegarde échoué<br />';
}

//On va ouvrir le fichier en écriture seule (w) on se place au début du fichier pour tout écraser
$fp = fopen($file, "w");
//On récupère le fichier modifié envoyé par le formulaire
$contenu2 = $_POST["fichier"];

//On écrit sur $file et on efface donc les informations déjà en place
if(fwrite ($fp, $contenu2)){
	echo 'Remplamcement ok de '.$file.'<br />'; 
}
else{
	echo 'Remplacement échoué<br />';
}

//On ferme le fichier	
fclose ($fp);

}
On sait jamais si ça peut servir...