Php modifier un fichier texte

Fermé
Claude - 13 janv. 2009 à 12:29
 Claude - 13 janv. 2009 à 15:15
Bonjour,

Je m'initie à php avec le site du zéro. J'aimerais modifier un fichier texte d'une ligne de données en les éditant (justifiées) dans un formulaire. La validation modifie bien le fichier MAIS simultanément le formulaire reprend les valeurs d'origine. Une solution consiste à le remodifier, mais c'est idiot et source d'erreurs potentielles.
Le formulaire ne renseigne donc sur le contenu du fichier qu'au lancement de la page. Y a-t'il moyen qu'il le fasse aussi après la modification du fichier ?
Merci d'avance.

Pour info :
<?php
if (isset($_POST['peages'])) {$liste = $_POST['peages'];} else {$_POST['peages'] = "";}
$fichier = fopen("_datas.txt", "r+"); $liste = fgets($fichier);
$liste = explode(",",$liste);
for ($i=0; $i<count($liste); $i++) {$liste[$i] = str_pad($liste[$i],4,"_",STR_PAD_LEFT);}
$liste = implode(" ",$liste);
?>

<form method = "post" action = "_index.php">
<textarea name = "peages" rows = "5" cols = "3"><?php echo ($liste); ?></textarea>
<p><input type = "submit" value = "Valider">
</form>

<?php
$liste = $_POST['peages']; $liste = str_replace(" ",",",$liste); $liste = str_replace("_","",$liste);
fseek($fichier, 0); fputs($fichier, $liste);
fclose($fichier);
?>
A voir également:

1 réponse

Bonjour

Pas mal de petits problèmes.
Déjà dès le début : $fichier = fopen("_datas.txt", "r+"); $liste = fgets($fichier);
Avec cette ligne, tu initialises $liste.
Donc le $liste = $_POST['peages']; que tu avais fait à la ligne précédente n'a servi à rien.
Ce que tu vas envoyer au formulaire, c'est ce qu'il y a dans le fichier, pas ce qui a été mis dans le formulaire.

Mais ça continue ...
Apès avoir envoyé le formulaire, tu abordes la partie:
<?php
$liste = $_POST['peages']; $liste = str_replace(" ",",",$liste); etc..
Et là tu viens modifier le fichier d'après les données du formulaire. Mais il me semble que tu crois que cette partie ne s'exécute qu'après que l'utilisateur ait validé le formulaire, parce que toi tu l'as écrite après le formulaire. Détrompe-toi : elle est exécutée aussitôt. Le PHP n'attend pas que l'utilisateur ait entré ses données.
Je n'ai pas testé ton script, mais je pense qu'il affiche bien les données modifiées.. La deuxième fois que tu le valides.

Il y a d'autres détails, mais corrige d'abord ça
0
Merci de cette réponse rapide qui devrait me décoincer.
0