Probleme ecrire compteur
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
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.
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.
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.
Je te remercie pour l'attention que tu porte a m'aider
Alors voila mon formulaire
<form action="cible.php" method="post">
<p>
<input type="text" name="chiffre" /> <input type="submit" value="Valider" />
</p>
</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 ?
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 :
<?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
while(!feof($monfichier)){
fputs('');
}
fseek ($monfichier, 0); // on va a la ligne
fputs($monfichier, $ratastrop); // on ecrit la valeur dans le compteur
$chiffre = fgets ($monfichier); // on le lit
fclose($monfichier); // on ferme le compteur
echo "$chiffre"; // on affiche se qu''on a mis
?>
OK je te remerci
Je vais tester cela
Il faudra le rajouter dans le tuto du site
Cela ne fonctionne pas
Salut,
Tu as une autre solution qui est de supprimer le fichier.
<?php
if(file_exists('compteur.txt')){
$monfichier1 = fopen('compteur.txt', 'a+'); // on ouvre le compteur
fseek ($monfichier1, 0); // on va a la ligne
$chiffre1 = fgets ($monfichier1); // on le lit
fclose($monfichier1); // on ferme le compteur
unlink('compteur.txt'); // on supprime le fichier
}
$monfichier = fopen('compteur.txt', 'a+'); // on ouvre le compteur
$ratastrop = ($_POST['chiffre']); //on recupere la valeur rentrer dans mon formulaire
fputs($monfichier, $ratastrop); // on ecrit la valeur dans le compteur
fseek ($monfichier, 0); // on va a la ligne
$chiffre = fgets ($monfichier); // on le lit
fclose($monfichier); // on ferme le compteur
echo '<p>Le chiffre est : '.$chiffre.' et avant était de : '.$chiffre1.'</p>'; // on affiche se qu''on a mis
?>
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.
Sa fonctionn je te remerci