Forum Clubic

Deme d'aide pour compteur php - faire un compteur à l'envers

Bonjour,
Je suis nouveau sur le forum j’espere que je place ma question au bon endroit sinon veuillez m’en excuser… Smile

Voila j’ai beau cherché sur le net je ne trouve pas de solution peut etre n’ai je pas tapé les bon mot clef mais je ne vois plus quoi faire…
Je désirais faire un compteur de visites a l’envers c’est a dire un décompte par exemple:

Il reste (le compteur ex: 200) visiteurs avant d’atteindre le 1000 eme.
J’espere que c’est assez précis

J’ai regarder partout sur le net mais certainement que quelques choses m’a echappé. Si quelqu’un pouvez m’aider se serai génial.

Merci beaucoup d’avance :??:

A mon avis il faut partir d’un compteur “normal” qui incrémente une valeur (en base de donnée ou sur un fichier texte).

L’histoire des il reste xxx visiteurs avant d’atteindre 1000 est juste un probleme de présentation de l’info.

Pourquoi pas un truc du genre


$compteur=chercher_compteur();
$seuil=1000;
while ($seuil<$compteur)
{
$seuil+=1000;
}

$diff=$seuil-$compteur;

echo "Il reste $diff visiteurs avant $seuil";

ps: mon php est ptet un peu rouillé :wink:

Moi je dirais plutot :


$compteur=chercher_compteur();
$seuil=1000;
while ($seuil>$compteur)
{
$compteur++;
}

$diff=$seuil-$compteur;

echo "Il reste $diff visiteurs avant $seuil";

et ne pas oublier de mettre à jour le compte dans la base de données ou dans le fichier texte.

Et si tu reprenais un compteur normal, et que tu le trafiquais? C’est pas compliqué, suffit de fixer un seuil, et de soustraire à ce seuil le nombre de visiteurs.

-> c’est ce que j’ai tenté de faire avec mon php rouillé/gripé/coincé

Merci je vais essayer ça mais si d’autres on d’autres idées n’hesitez po :oui:

voila j’ai essayé mais ca marche pas j’ai du faire une erreur le soucis aussi c’est que je veux que ca parte de 100 en allant vers 0.
Par exemple:
il reste 99 visiteurs avant d’atteindre le 100e
il reste 54 visiteurs avant d’atteindre le 100e

voici mon code avec un peu du votre.


<?php
$lire = fopen("compteur.txt","r+"); // On ouvre le fichier texte
$compteur = fgets($lire,20); // On récupère la valeur dans le fichier texte

$seuil=100;
while ($seuil<$compteur)
{
$compteur++;
}

$diff=$seuil-$compteur;


fseek($lire, 0); // On se place au début du fichier texte
fputs($lire,$compteur); // On insère la valeur du compteur dans le fichier texte
fclose($lire); // On ferme le fichier texte

echo "Il reste $diff visite avant de voir le $seuil";
?>

Merci de votre aide j’ai déja plus avancé

Tu peux changer le titre de ton sujet s’il te plaît?

Les titres vagues comme "A LLLLLLLLLLLAIDE GROS PROBLEME PHP" (et éventuellement en caps lock donc) ne sont pas trop utiles pour ceux qui parcours le forum.

:??: Mon sujet : Demande d’aide php

N’est pas du tout le nom que tu précises et il n’est pas en majuscule certe il est vague j’aurais pu préciser mais est ce utile de mettre un message comme ca sur le topic qui ne fais pas avancer mon problème qui servira certainement à d’autre personnes.

Sinon merci de ta contribution quand même. :wink:

Alors, pour te répondre :

  1. je suis modérateur, et suis chargé de veiller à ce que les utilisateurs ici bas suivent un peu les règles - dont celles sur les titres de topic

  2. tu n’as pas trouvé de résultats dans google, malgré tes mots clefs? Imagine un peu que toute les pages aient des titres aussi vagues que le tien, et que l’on fasse une recherche juste sur le titre : sur quoi tu tombe? Un millier de résultats avec 1% de chance d’avoir ce que tu veux.

Ne le prend pas mal, non plus.

C’est juste que j’aimerai que tu prennes conscience qu’un titre bien choisi permettra dans le futur aux gens dans le même cas que toi de trouver de l’aide sans devoir poser des questions.

(genre Compteur de visite à l’envers, etc)

Question : tu fais quoi quand ton compteur arrive à 1000 ? :smiley:

Je ne le prends pas mal si tu veux que je change le titre dis moi comment faire.
Merci

Dès qu’il arrive a 1000 la meme choses mais avec 2000 et ainsi de suite

Pour changer le titre : t’as un bouton éditer au pied de ton premier message, ca changera le titre du topic ^^ normal quoi :ane:

Concernant ton compteur : c’est plus tout à fait la même histoire si tu fais ce que tu viens de dire…

c’est a dire??
si tu as une idée de code je la veux bien
merci

Tu peux aussi faire sa avec une base de donnée, si tu en a une :

-Création de la table SQL

CREATE TABLE `compteur` (
`id` INT NOT NULL AUTO_INCREMENT ,
`nbv` INT NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM;

-Code PHP

<?
$sql="SELECT * FROM compteur WHERE id=1"; 
$req=mysql_query($sql);
$data=mysql_fetch_array($req);

if($data['nbv'!=1000])
{
   $nbvr=1000-$data['nbv'];
   $nbv=$data['nbv']+1;
   echo"Il reste ".$nbvr." visiteurs avant le 1000em.";
   $sql2="UPDATE compteur SET nbv=".$nbv." WHERE id=1";  
   mysql_query($sql2);
}
else
{
   echo"Le 1000em visiteur a été atteint !"
}
?>

Car la méthode de guizmo87 peut bugger : si deux utilisateur arrivent en meme temps sur ton site, il rique d’y avoir des erreurs d’écriture dans le fichier, on aurai pu donc utiliser la fonction flock pour empecher l’écriture dans le fichier pendant qu’on écrit dedans, c’est un peut compliquer a expliquer mais c’est comme sa !

j’espere que mon code va t’aider :wink:
@+

Oui j’ai pas abordé la base de données mais en effet c’est plus efficace ^^

Enfin bon ca permet pas de gérer des sauts de 1000 en 1000. Et euh pour être franc je sais pas le faire ‘proprement’ :slight_smile:

Par ici pour l’édition :

http://www.clubic.com/forum/index.php?act=…3&p=6690379&st=

Pour le test
if($data[‘nbv’] !=1000])

Vaut mieux le remplacer par un > 0, etc.

Sinon par fichier c’est pas plus mal que d’utilise une table SQL pour ça… (surtout que bon, y a pas tellement d’opérations à faire dessus)

merci pour vos réponses mais j’aimerai rester sur un compteur.txt le code qu ira le chercher si possible je ne peux pas utiliser de table.

Me revoila j’ai encore besoin de vous de votre grande aide…

voila mon code ca marche pas ca affiche -1 kan on lance le compteur et la condition que j’ai mis ne fonctionne po… J’espere que vous allez pouvoir m’aider!!!

Je rapelle le principe de mon compteur:

Je veux que que le compteur décompte les visites pour faire un truc du style il reste ??? avant le 1000 eme visiteurs. et que quand celui si est arrivé à zéro il marque bravo vous etes le millieme et que ca reparte de 2000 pour arriver a 0 ainsi de suite.


<BODY>
<? 
$fich="cpt.txt"; /* nom du fichier compteur */ 

$fp=fopen("$fich","r+"); /* Ouverture du fichier en lecture/ecriture */ 

$cpt=fgets($fp,10); /* lecteur des 10 premiers caractères */ 

if ($cpt=0)
{
echo "Bravo Vous avez etes le $seuil eme";

$fp=fopen("$fich","r+"); /* Ouverture du fichier en lecture/ecriture */ 

$cpt=fgets($fp,10); /* lecteur des 10 premiers caractères */ 


$cpt=2000; /* remet le compteur à 10 */ 

}

$seuil=10;
$cpt--; /* décrémente le compteur de 1 */ 

fseek($fp,0); /* Déplacement du pointeur au début du fichier */ 

fputs($fp,$cpt); /* Ecriture de la nouvelle valeur du compteur */ 

fclose($fp); 

/*echo $cpt;*/


echo "Il reste $cpt visiteur(s) avant le $seuil ème"; 
?> 
</BODY>

Merci Beaucoup


<?php

$file="compteur.txt";
$pas=100;
$compteur=0;

// le fichiers existe-t-il ?
if(is_file($file))
{
	// oui : on lit son contenu...
	$lignes=file($file); 
	if( isset($lignes[0]) ) $compteur=intval($lignes[0]);
}

$compteur++;
$reste=$pas-$compteur%$pas;
echo "Vous etes le $compteur a cliquer sur ce c** de script<br />il reste $reste avant le prochain seuil ".($compteur+$reste);

$fd=fopen($file,"w");
fwrite($fd,sprintf("%d",$compteur));
fclose($fd);

?>



tiens ça m enerve ce post :slight_smile: