begin process at 2010 02 10 16:54:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > COMPTEUR SIMPLE MAIS EFFICACE

COMPTEUR SIMPLE MAIS EFFICACE


 Information sur la source

Note :
3,75 / 10 - par 4 personnes
3,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :16/02/2004 Date de mise à jour :23/04/2004 09:11:27 Vu / téléchargé :7 952 / 742

Auteur : Spiritraid

Ecrire un message privé
Site perso
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Ce script est très simple,il s'agit d'un compteur en php.
Le script utilise 2 tables (1 pour le compteur et 1 pour les visiteurs).
Il est aussi "intelligent", il vérifie si le visiteur est déjà passé il y a 1h ou moins.
Si ça fait plus d'1 heure qu'il n'a pas changé d epage ou n'est pas revenu, ça incrémente le compteur, sinon il ne bouge pas .
A la fin, il y a l'affichage du compteur.

L'archive comprend le fichier compteur.php; install_compteur.php (à uploader, lancer dans votre explorateur puis à déléter) ainsi que 10 images pour démarrer (libre à vous de les chnager, il suffit de mettre els memes types (ici  jpg)

Source

  • le code du compteur :
  • <?
  • include('param.php'); // paramètres de connection à la BDD
  • $db = mysql_connect("$host", "$nom", "$password") or die("connection impossible");
  • mysql_select_db($bd, $db) or die("erreur bdd");
  • $current_date = strftime("%Y-%m-%d %H:%M:%S"); // date actuelle
  • $date_limit = time()-3600; // date max de la validation de l'ip (1h)
  • /* définition de l'affichage du compteur */
  • $nb = mysql_fetch_array(mysql_query("SELECT * FROM compteur"), MYSQL_BOTH);
  • $cent_mil = $nb[6];
  • $dix_mil = $nb[5];
  • $mil = $nb[4];
  • $cent = $nb[3];
  • $dix = $nb[2];
  • $u = $nb[1];
  • /* fin de l'affichage */
  • /* définition du visiteur */
  • $ip = $REMOTE_ADDR;
  • $visiteur = mysql_query("SELECT * FROM compt_visiteurs WHERE ip='$ip'");
  • $exist = mysql_numrows($visiteur);
  • if($exist != 0) // le visiteur est déjà venu
  • {
  • $visit = mysql_fetch_array(mysql_query("SELECT * FROM compt_visiteurs WHERE ip='$ip'"));
  • $d = explode(" ", $visit['date']);
  • $y = explode("-", $d[0]);
  • $h = explode(":", $d[1]);
  • $date = mktime($h[0], $h[1], $h[2], $y[1], $y[2], $y[0]);
  • if($date < $date_limit) // si la date du passage du visiteur est plus vieille que la date limite de visite pour incrémenter le compteur
  • {
  • $u = $u + 1;
  • }
  • mysql_query("UPDATE compt_visiteurs SET date='$current_date' WHERE ip='$ip'");
  • }
  • else
  • {
  • mysql_query("INSERT INTO compt_visiteurs VALUES('','$ip','$current_date')");
  • $u = $u + 1;
  • }
  • /* fin du visiteur */
  • if($u == '10')
  • {
  • $u = '0';
  • $dix = $dix + 1;
  • if($dix == '10')
  • {
  • $dix = '0';
  • $cent = $cent + 1;
  • if($cent == '10')
  • {
  • $cent = '0';
  • $mil = $mil + 1;
  • if($mil == '10')
  • {
  • $mil = '0';
  • $dix_mil = $dix_mil + 1;
  • if($cent_mil == '10')
  • {
  • $cent_mil = '9';
  • $dix_mil = '9';
  • $mil = '9';
  • $cent = '9';
  • $dix = '9';
  • $u = '9';
  • }
  • }
  • }
  • }
  • }
  • mysql_query("UPDATE compteur SET unite='$u', dizaine='$dix', centaine='$cent', millier='$mil', dix_millier='$dix_mil', cent_millier='$cent_mil' WHERE id='1'");
  • $img_u = "<img src='compt_images/".$u.".jpg'>";
  • $img_dix = "<img src='compt_images/".$dix.".jpg'>";
  • $img_cent = "<img src='compt_images/".$cent.".jpg'>";
  • $img_mil = "<img src='compt_images/".$mil.".jpg'>";
  • $img_dix_mil = "<img src='compt_images/".$dix_mil.".jpg'>";
  • $img_cent_mil = "<img src='compt_images/".$cent_mil.".jpg'>";
  • $compteur = array($img_cent_mil, $img_dix_mil, $img_mil, $img_cent, $img_dix, $img_u);
  • $cpt = implode("", $compteur);
  • echo "$cpt";
  • ?>
le code du compteur :

<?
include('param.php'); // paramètres de connection à la BDD
  $db = mysql_connect("$host", "$nom", "$password") or die("connection impossible");
  mysql_select_db($bd, $db) or die("erreur bdd");
  
$current_date = strftime("%Y-%m-%d %H:%M:%S");  // date actuelle
$date_limit = time()-3600;   // date max de la validation de l'ip (1h)

/* définition de l'affichage du compteur */
$nb = mysql_fetch_array(mysql_query("SELECT * FROM compteur"), MYSQL_BOTH);
$cent_mil = $nb[6];
$dix_mil = $nb[5];
$mil = $nb[4];
$cent = $nb[3];
$dix = $nb[2];
$u = $nb[1];
/* fin de l'affichage */

/* définition du visiteur */

$ip = $REMOTE_ADDR;
$visiteur = mysql_query("SELECT * FROM compt_visiteurs WHERE ip='$ip'");
$exist = mysql_numrows($visiteur);
if($exist != 0) // le visiteur est déjà venu
  {
   $visit = mysql_fetch_array(mysql_query("SELECT * FROM compt_visiteurs WHERE ip='$ip'"));
   $d = explode(" ", $visit['date']);
   $y = explode("-", $d[0]);
   $h = explode(":", $d[1]);

   $date = mktime($h[0], $h[1], $h[2], $y[1], $y[2], $y[0]);

   if($date < $date_limit)   //  si la date du passage du visiteur est plus vieille que la date limite de visite pour incrémenter le compteur
     {
      $u = $u + 1;
     }
   mysql_query("UPDATE compt_visiteurs SET date='$current_date' WHERE ip='$ip'");
  }
else
  {
   mysql_query("INSERT INTO compt_visiteurs VALUES('','$ip','$current_date')");
   $u = $u + 1;
  }
  
/* fin du visiteur */


if($u == '10')
  {
   $u = '0';
   $dix = $dix + 1;
   if($dix == '10')
     {
      $dix = '0';
      $cent = $cent + 1;
      if($cent == '10')
	{
	 $cent = '0';
	 $mil = $mil + 1;
	 if($mil == '10')
	   {
	    $mil = '0';
	    $dix_mil = $dix_mil + 1;
	    if($cent_mil == '10')
	      {
	       $cent_mil = '9';
	       $dix_mil = '9';
	       $mil = '9';
	       $cent = '9';
	       $dix = '9';
	       $u = '9';
	      }
	   }
	}
     }
  }
mysql_query("UPDATE compteur SET unite='$u', dizaine='$dix', centaine='$cent', millier='$mil', dix_millier='$dix_mil', cent_millier='$cent_mil' WHERE id='1'");
$img_u = "<img src='compt_images/".$u.".jpg'>";
$img_dix = "<img src='compt_images/".$dix.".jpg'>";
$img_cent = "<img src='compt_images/".$cent.".jpg'>";
$img_mil = "<img src='compt_images/".$mil.".jpg'>";
$img_dix_mil = "<img src='compt_images/".$dix_mil.".jpg'>";
$img_cent_mil = "<img src='compt_images/".$cent_mil.".jpg'>";
$compteur = array($img_cent_mil, $img_dix_mil, $img_mil, $img_cent, $img_dix, $img_u);
$cpt = implode("", $compteur);
echo "$cpt";

?>

 Conclusion

C'ets ma première source, et aussi mon premier compteur, mais je le toruve plutôt bien alors je vous le prete :p

Pour l'installation, il vous faut, soit un fichier param.php comprenant ce code :
<?
$host = 'nom_de_l_hote';
$nom = 'login_de_connexion_a_la_base';
$password = 'pass_de_connexion_a_la_base';
$bd = 'nom_de_la_base';
?>
ou alors vous ouvrez le fichier install_compteur.php et changez les paramètres de connexion à la base de données avec vos propres paramètres.
$host vous mettez le nom de l'hôte de la base
$nom vous mettez le login de connexion à la base
$password vous mettez le mot de passe de connexion
$bd vous mettez le nom de la base de données

Dernière solution, recopiez ce code dans phpmyadmin :

CREATE TABLE compteur ( id tinyint(1) NOT NULL default '1', unite tinyint(1) NOT NULL default '0', dizaine tinyint(1) NOT NULL default '0', centaine tinyint(1) NOT NULL default '0', millier tinyint(1) NOT NULL default '0', dix_millier tinyint(1) NOT NULL default '0', cent_millier tinyint(1) NOT NULL default '0' ) TYPE=MyISAM
INSERT INTO `compteur` (`id`,`unite`, `dizaine`, `centaine`, `millier`, `dix_millier`, `cent_millier`) VALUES ('1','0', '0', '0', '0', '0', '0')


enjoy ;)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

CALCUL D'UNE DISTANCE ORTHONORMIQUE par bossfoot
Source avec Zip ESPACE ADMIN SIMPLE par mousaid_88
Source avec Zip IMAGINE-CMS V2.20 par djack69
Source avec Zip AFFICHAGE ET GESTION DE DIAPORAMA EN PHP SANS BASE DE DONNÉE... par mldvb
Source avec Zip Source avec une capture PARSER ALLOCINE par cyrhades

Commentaires et avis

Commentaire de lgrenon le 25/02/2004 12:18:51

Le concept est très bien !
En revanche, tu as fait une petite faute qui fait que lorsque tu recharges la page le compteur s'incrémente quand même, il n'attend pas 1H. Cette erreur la voici :
mysql_query("INSERT INTO compt_visiteurs VALUES('','$ip','$current_date')");
Remplace par :
mysql_query("INSERT INTO compt_visiteurs (ip, date) VALUES('$ip','$current_date')");
Voila, c'était un petit détail et maintenant le compteur marche impecable !
8/10

Commentaire de gloglo889 le 26/05/2004 21:53:44

Voila je suis un debutant en creation de site et j'ai un petit probleme :
j'ai installé correctement ce compteur dans ma base de donne puis j'ai copier le code du compteur comme indiqué. Mais il n'arrive pas a afficher les chiffres du compteur . J'ai upgradé mes numero dans un dossier nommé 'compt_images' qui se situe avec mon fichier index. Au lieux de me l'ai afficher, il me mets une petite croix comme si il ne trouver pas les fichier.
                             J'espere que vous allez me repondre tres bientot
                                  Merci

Commentaire de Spiritraid le 27/05/2004 14:57:44

ben vérifie les url des img ke ta up, les noms, les attributs (jpg, JPG, jpeg etc...)

Commentaire de gloglo889 le 27/05/2004 22:11:08

je c que ce sont mes URL ki ne fonctionne pas ms je ne c pas comment les changer !!! :'(

Commentaire de gloglo889 le 27/05/2004 23:02:33

Tien si tu veux je peux te donner l'adresse de mon site: http://membres.lycos.fr/tuningseclin
(=&gt; c pas pour faire de la pub !! ;)

Commentaire de Spiritraid le 28/05/2004 08:51:37

alors là, dsl mais je te classe dans la catégorie gros noob qui veut faire un truc sans rien savoir ...
ta page c'est du html ! depuis quand le html comprend et interprète le php ?!!!

Commentaire de gloglo889 le 28/05/2004 16:25:18

Donc ton compteur ne peux pas fonctionner avec mon site ? alors je ne peux pas mettre de compteur sur mon site ? ou alors il y a certain compteur simple qui peuvent fonctionner avec mon site ? si oui peux tu me donner un exemple stp . Merci

Commentaire de gloglo889 le 28/05/2004 16:26:29

en meme tenps c en éssaillent kon apren !!!!  tu voi mintenant je c kon pE pas melanG php et htlml !

Commentaire de lgrenon le 28/05/2004 17:58:10

mdr ta vraiment rien compris toi. HTML et PHP se mélangent puisque le PHP génère de l'HTML mais pour que le PHP soit interprété par le parseur (le serveur si tu préfères) et bien il faut que cette page ait l'extension *.php *.php3 ... et non *.htm ou *.html ou autre.

Commentaire de gloglo889 le 28/05/2004 18:03:26

C bon g piG (enfin !! lol ). De toute facon g trouV un super compteur qui fonctionne ( en tous cas ke jarrive a faire aller !!!) Merci de ton aide !!  

Commentaire de lgrenon le 28/05/2004 18:29:58

un compteur de compteur.com
xptdrr et tu appelles sa super ? Si tu veux mais il n'est pas très fiable car dès que tu recharges ta page il s'incrémente quand même et en plus tu as toute la pub avec :-/

Commentaire de Spiritraid le 28/05/2004 20:54:01

Quand on sait mm pas ça, je veux dire c'est en-dessous du niveau débutant qu'on se place ...
N'importe ki se renseigne un minimum et sait en 1h que le html ne comprend pas le php et comment il faut faire comprendre au server que c'est du php, après si tu veux prendre la bécquée c'est ton pb ...

Commentaire de gloglo889 le 29/05/2004 14:15:24

C bon faite pas chier g ke 10 ans et jaV pas envi de me prendre la tete !! de plus moi, a mon avis, je passe pas comme vous 24/24 sur mon pc g pas ke ca a faire !!!!  

Commentaire de gloglo889 le 29/05/2004 14:17:00

De plus la creation de site web ne minteresse pas du tous !!! g fet un site c juste pour un copin !

Commentaire de lgrenon le 29/05/2004 16:31:15

Si sa ne t'intéresse pas et que tu ne veut pas que l'on te fasse chier nous fait pas chier avec tes questions à 2 balles.
Après pour la petite anecdote sache que l'on ne passe pas tous nos journées sur PC en ce qui me concerne j'ai le bac dans une semaine alors...
Pour le troisième points ta 10 ans et tu n'as pas que sa à faire? mdr on dirais que t'es débordé à ton âge malheureux.

Commentaire de Darrouck le 12/06/2004 18:42:37

Là, je  trouve  Igrenon dur.Il y 10 ans il aimerait apprendre, c'est le but du site non? et tu le traites comme le dernier des idiots. Moi je trouve ça bien(d'essayer de comprendre) Si tu sais tout, tu serais capable d'expliquer de façon qu'il comprenne.

Commentaire de lgrenon le 12/06/2004 18:51:59

Déja pour commencer c pa Igrenon mais lgrenon après quand on veut apprendre quelque chose on peut très bien se débrouiller soit même, il y a des moteurs de recherche sur le net dont google fait parti.
Après si je suis dur c'est peut-être le cas mais c'est parce que sur le chat on retrouve toujours ces mêmes questions alors qu'en prenant la peine de chercher soit même tout simplement on trouve la réponse, je sais que c'est plus facile de demander aux autres mais bon ce n'est pas comme cela que l'on progresse ...

Commentaire de Spiritraid le 12/06/2004 22:06:20

si tu relisais aussi tu verrais qu'il veut pas apprendre :D

Commentaire de darkwhite le 19/08/2007 10:15:51

Salut  Spiritraid,
je trouve ton code intéressant et je voudrais le mettre sur mon site.
J'ai donc fait :
<div id="pied_de_page">
  <p>
  Creation du site : Pierre Capdessus | Directeur de la section Montagne : Serge Capdessus

  <script language="javascript" src="compteur.php?affich=1">
      <?
  
    
     if(!file_exists("compteur.txt")){
     $fp=fopen("compteur.txt","w");
     fputs($fp,"1");
     fclose($fp);
     }
     if(!is_dir("compteur")){
     mkdir("compteur",0777);
     $fp=fopen("compteur/.htaccess","w");
     fputs($fp,"deny from all");
     fclose($fp);
     }
    
     if(!$HTTP_X_FORWARDED_FOR) $ip = $REMOTE_ADDR;
     else $ip = $HTTP_X_FORWARDED_FOR;
    
     $dir=opendir("compteur");
     while($file=readdir($dir)){
     if($file!="index.php" && $file!="." && $file!=".." && $file!=".htaccess"){
     $temps=file("compteur/$file");
     $temps=trim($temps[0]);
     if(time()>($temps+(60*60*24))){
     @unlink("compteur/$file");
     }
     }
     }
    
    
     $n=file("compteur.txt");
     $n=trim($n[0]);
    
     if(!file_exists("compteur/$ip")){
     $n++;
     $fp=fopen("compteur.txt","w");
     fputs($fp,$n);
     fclose($fp);
     $fp=fopen("compteur/$ip","w");
     fputs($fp,time());
     fclose($fp);
     }
    
     if($affich) echo "document.write(\"$n\");";
    
     ?>

</script>

  </p>
</div>


Le code css de "pied de page" est :
#pied_de_page
{
color:white;
/*text-size:20px;*/
background-color:black;
}

Or quand sur la page rien ne s'affiche. Mais il y a bien un fichier compteur.txt crée et le nombre écrit dedans semble être incrémenté.

D'où viens le problème si quelqu'un sait ?

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales