Probleme ecrire compteur - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Probleme ecrire compteur

Par zmaped -  9 reponses -  Le 07/12/2009 -  Flux RSS - 

Bonsoir

Bon voila, mon code PHP fonctionne nikel et tout

j'ai crée un formulaire uniquement avec le champ texte, je rentre un nombre et sa me l'ecrit dans un fichier 

compteur.txt

Seulement voila :

Si j'ecrit 1245852 en premier puis de nouveau je reecri 745 cela va me mettre 7455852.

Il va me rajouter les nombre precedent hors je voudrais que 

Je rentre un nombre, sa ecrit dans le formulaire

Je refait la manip avec un nombre different, sa efface se qu'il ya dans le formulaire, puis ecrit la nouvelle valeur 

 ( j'ai fait fseek pour qu"il revient a la ligne a chaque fois)

<?php
$ratastrop = ($_POST['chiffre']); //on recupere la valeur rentrer dans mon formulaire
$monfichier = fopen("compteur.txt", "r+"); // on ouvre le compteur
$chiffre = fgets ($monfichier); // on le lit
fseek ($monfichier, 0); // on va a la ligne
fputs($monfichier, $ratastrop); // on ecrit la valeur dans le compteur
fclose($monfichier); // on ferme le compteur
echo "$chiffre"; // on affiche se qu''on a mis
?>

 

 

 

 

Réponses apportées à cette discussion

Par Cyrano -  Le 07/12/2009 - 

Salut Zmaped,

on code affiche logiquement la précédente valeur puisque ton echo() affiche ce que tu as récupéré dans le fichier AVANT la ré-écriture de la nouvelle valeur.

 

 
Par zmaped -  Le 07/12/2009 - 

Oui d'accord je le sais sa, mais si tu veut je voudrais que la valeur s'efface du compteur et réecrive la nouvelle.

 

 
Par Cyrano -  Le 07/12/2009 - 

Ok, mais dans ce cas, comment est généré ton formulaire ?

Il faut qu'il soit généré après cette phase, que tu réinitialise ta variable avec la nouvelle valeur et que tu insères cette variable dans l'attribut value de ton champ texte.

Là ton code ne montre que le traitement de la valeur, pas le reste du montage de ton formulaire.

 
Par zmaped -  Le 07/12/2009 - 

Je te remercie pour l'attention que tu porte a m'aider

Alors voila mon formulaire

  1. <form action="cible.php" method="post">
  2. <p>
  3. <input type="text" name="chiffre" /> <input type="submit" value="Valider" />
  4. </p>
  5. </form>

Donc en faire dans le value du champ texte  c'est a dire :

<input type="text" name="chiffre" value="$ratastrop />

 et sa devrait fonctionner ?

 

 

 
Par Mimosa -  Le 08/12/2009 - 

Pourquoi tu lis dans ton fichier alors que tu n'as pas encore écrit dedans ?

Ton fgets ne devrait-il pas être après fputs ?

Sinon pour vider ton fichier tu peux faire comme-ci :

 

  1. <?php
  2. $ratastrop = ($_POST['chiffre']); //on recupere la valeur rentrer dans mon formulaire
  3. $monfichier = fopen("compteur.txt", "r+"); // on ouvre le compteur
  4. $chiffre = fgets ($monfichier); // on le lit
  5. while(!feof($monfichier)){
  6. fputs('');
  7. }
  8. fseek ($monfichier, 0); // on va a la ligne
  9. fputs($monfichier, $ratastrop); // on ecrit la valeur dans le compteur
  10. $chiffre = fgets ($monfichier); // on le lit
  11. fclose($monfichier); // on ferme le compteur
  12. echo "$chiffre"; // on affiche se qu''on a mis
  13. ?>

 

 
Par zmaped -  Le 08/12/2009 - 

OK je te remerci

Je vais tester cela

Il faudra le rajouter dans le tuto du site

 

 
Par zmaped -  Le 08/12/2009 - 

Cela ne fonctionne pas

 

 
Par Mimosa -  Le 10/12/2009 - 

Salut,

Tu as une autre solution qui est de supprimer le fichier.

  1. <?php
  2. if(file_exists('compteur.txt')){
  3. $monfichier1 = fopen('compteur.txt', 'a+'); // on ouvre le compteur
  4. fseek ($monfichier1, 0); // on va a la ligne
  5. $chiffre1 = fgets ($monfichier1); // on le lit
  6. fclose($monfichier1); // on ferme le compteur
  7. unlink('compteur.txt'); // on supprime le fichier
  8. }
  9. $monfichier = fopen('compteur.txt', 'a+'); // on ouvre le compteur
  10. $ratastrop = ($_POST['chiffre']); //on recupere la valeur rentrer dans mon formulaire
  11. fputs($monfichier, $ratastrop); // on ecrit la valeur dans le compteur
  12. fseek ($monfichier, 0); // on va a la ligne
  13. $chiffre = fgets ($monfichier); // on le lit
  14. fclose($monfichier); // on ferme le compteur
  15. echo '<p>Le chiffre est : '.$chiffre.' et avant était de : '.$chiffre1.'</p>'; // on affiche se qu''on a mis
  16. ?>

Dans cette exemple, tu testes si le fichier existe. Si il existe, tu récupére la valeur qu'il contient et tu le supprime. Puis tu le recréer afin d'écrire dedans.

Il y a peut-être plus simple mais je ne connais pas trop. Si tu n'as pas besoin de lire la valeur du fichier avant, tu peux le supprimer directement.

 

 

 
Par zmaped -  Le 11/12/2009 - 

Sa fonctionn je te remerci

 

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !