Renommer un fichier avant modification

Eléphanteau du PHP | 38 Messages

18 mai 2012, 16:44

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.

Eléphanteau du PHP | 38 Messages

18 mai 2012, 17:03

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...