Modification fichier txt : PHP

Bonjour,

Donc voici mon fichier index.php

<html>
<body>
<?php

$monfichier = fopen('toto.txt', 'r+');
// lit le contenu du fichier
$image1 = fgets($monfichier);
$nom1 = fgets($monfichier);
$link1 = fgets($monfichier);
$image2 = fgets($monfichier);
$nom2 = fgets($monfichier);
$link2 = fgets($monfichier);
$image3 = fgets($monfichier);
$nom3 = fgets($monfichier);
$link3 = fgets($monfichier);
$image4 = fgets($monfichier);
$nom4 = fgets($monfichier);
$link4 = fgets($monfichier);
?>

<p>
<form method="post" action="modif.php">
<label for="text">J'enregistre mon texte :</label><br />
<textarea name="text" cols="50" rows="2"><?php echo $image1; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $nom1; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $link1; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $image2; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $nom2; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $link2; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $image3; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $nom3; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $link3; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $image4; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $nom4; ?></textarea>
<textarea name="text" cols="50" rows="2"><?php echo $link4; ?></textarea>
<p><input type="submit" value="Enregistrer"/></p>
</p>

</form>

</body>
</html>

Voici mon fichier modif.php

<?php
// le chemin de votre fichier
$monfichier = 'toto.txt';
// Modification du fichier
file_put_contents($monfichier, $_POST['text']);
//redirection vers la page le formulaire pour d'autres modifs
header('Location: index.php');
?>

Et donc mon problème c'est que rien ne s'enregistre dans mon fichier toto.txt qui est en CHMOD 777

Un petit cou de main les gars ? =)
Merci.

4 réponses

Résumé de la discussion

Un formulaire PHP posté vers modif.php n’écrit pas le contenu dans toto.txt lorsque le bouton Enregistrer est cliqué, malgré un CHMOD 777 sur le fichier. Plusieurs participants recommandent de nommer les champs texte de manière distincte ou d’utiliser un tableau texte[] pour récupérer les entrées dans $_POST, afin d’éviter que les valeurs ne s’écrasent lors de l’enregistrement. Réponse 3 propose de lire Toto.txt en array avec file($monFichier) et d’écrire via modif.php avec $_POST['texte'] (un tableau), et de boucler lors de l’affichage pour préserver le format. D’autres mentions : vérifier que $_POST n’est pas vide, régler l’exécution avec exit() après redirection, et utiliser une solution qui supporte l’ajout de lignes au fichier plutôt que d’écraser.

Bobot (l’IA à votre service)
  1. <html>
    <body>
    <?php
    
    $monfichier = fopen('toto.txt', 'r+');
    // lit le contenu du fichier
    $image1 = fgets($monfichier);
    $nom1 = fgets($monfichier);
    $link1 = fgets($monfichier);
    $image2 = fgets($monfichier);
    $nom2 = fgets($monfichier);
    $link2 = fgets($monfichier);
    $image3 = fgets($monfichier);
    $nom3 = fgets($monfichier);
    $link3 = fgets($monfichier);
    $image4 = fgets($monfichier);
    $nom4 = fgets($monfichier);
    $link4 = fgets($monfichier);
    ?>
    
    <p>
    <form method="post" action="modif.php">
    <label for="text">J'enregistre mon texte :</label><br />
    <textarea name="texte[]" cols="50" rows="2"><?php echo $image1; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $nom1; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $link1; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $image2; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $nom2; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $link2; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $image3; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $nom3; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $link3; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $image4; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $nom4; ?></textarea>
    <textarea name="texte[]" cols="50" rows="2"><?php echo $link4; ?></textarea>
    <!-- il faut que le name de chaque textarea soit différent car c'est grace à cela que l'on récupère les valeurs, 
    mais si on met un  name de la forme xxx[] on récupère dans un array ce qui est utile pour enregistrer par la suite par file_put_conten(file_name,array) 
    et évites d'utiliser des noms réservés html    text sert a définir le type d'un input par exemple
    -->
    <p><input type="submit" value="Enregistrer"/></p>
    </p>
    
    </form>
    
    </body>
    </html>
    
    
    
    
    Voici mon fichier modif.php
    
    <?php
    // le chemin de votre fichier
    $monfichier = 'toto.txt';
    // Modification du fichier
    // $_POST['texte'] est un array
    file_put_contents($monfichier, $_POST['texte']);
    //redirection vers la page le formulaire pour d'autres modifs
    header('Location: index.php');
    ?>
    1
    1. Génial ! Merci alain !

      Mais voilà, les données s'enregistre bien mais dans le fichier txt mais il s'ajoute à la suite et non pas à la ligne, c'est qui a pour cause à chaque fois qu'on enregistre une donnée dans une case elle s'affiche par la suite toutes dans la case "A" par exemple.
      0
  2. autre methode avec des boucles ce qui te permet de rajouter des lignes dans ton fichier sans modifier le code

    <?php 
    $monFichier='toto.txt'; 
    //on lit et met dans un array grace à la fct file 
    $array_lu=file($monFichier); 
    
    //formulaire 
    echo '<p>'; 
    echo '<form method="post" action="modif.php">'; 
    echo 'J\'enregistre mon texte :<br />'; 
    //boucle d'affichage des textarea 
    for($i=0;$i<sizeof($array_lu);$i++){ 
     echo '<textarea name="texte[]" cols="50" rows="2">'.$array_lu[$i].'</textarea>'; 
    } 
    ?> 
    <p><input type="submit" value="Enregistrer"/></p>'; 
    </p> 
    
    </form> 
    
    </body> 
    </html> 
    
    fichier modif.php 
    
    <?php 
    // le chemin de votre fichier 
    $monFichier = 'toto.txt'; 
    // Modification du fichier 
    // $_POST['texte'] est un array 
    file_put_contents($monFichier, $_POST['texte']); 
    //redirection vers la page le formulaire pour d'autres modifs 
    header('Location: index.php'); 
    ?>
    1
    1. Regarde alain ce que je voudrais faire enfaite tu comprendra mieux ce que je cherche a faire. ( enfaîte je veux faire un "administration" une page simple pour modifier rapidement mes donnés sur mon site)

      https://www.imagup.com/data-recovery-solutions-for-small-businesses-of-san-francisco/

      J'ai déja mis mon PHP en place sur mon site maintenant je voudrais pouvoir seulement rapidement pouvoir modifier mes données dans mon fichier txt =)
      0
    2. up alain ? =)
      0
    3. Alaain =/ ??
      0
  3. pourquoi as tu ait un double post ?
    0
    1. Ah non dsl je ne pense pas avoir fait un double post ... oO
      0
    2. Op ! Excusez moi, j'ai eu un message d'erreur la première fois je pensé que ça n'avais pas enregistrer -_- dsl !

      Pour mon problème vous avez des solutions ?
      0
    3. up ?
      0