Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#51 14/12/2009 23:28:31

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : insérer un compteur

Satanas a écrit :

Bonsoir à tous,

bon voilà une petite réalisation à partir de Zite : UV7ab.
Et là dessus, je voudrais intégré un compteur de visites faisant état du nombre total de visiteurs : à l'année, au mois, à la semaine et à la journée.
BBclone fait cela, mais je n'arrive pas à l'implanter avec Zite. Quelqu'un a-t-il une solution, svp ?
J'ai essayé une solution php/mysql : c'est jjscompteur, mais il faut se connecter à une base de données et je ne le souhaitais pas. Exemple jjscompteur ici

Merci d'avance pour votre aide et bonne continuation à tous.

Bonsoir,
je vois que tu utilises ZitePLUS 0.9.0.
Est-ce que tu as essayé la solution simple (le compteur de Fredo42):
- ajouter une page PHP de type Panneau latéral
- par la config des pages, choisir par exemple un type de panneau 3 (pour l'afficher sous le menu)
- par l'éditeur de source (la "roue dentée") mettre le code de Fredo42 situé quelques messages plus haut
- publier la page

a+
jean-paul

Dernière modification par jpg (14/12/2009 23:28:50)

Hors ligne

#52 16/12/2009 00:26:30

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : insérer un compteur

@satanas: en tout cas, il a du chien ton site wink !

++ vYk


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#53 17/12/2009 00:41:22

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

je vais modifier le script pour qu'il corresponde à tes besoins


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#54 17/12/2009 03:14:26

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

voilà, il n'y a plus tester...

il y a des erreurs
je le refais dans la soirée (18/12/2009)

Dernière modification par Fredo42 (18/12/2009 20:28:26)


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#55 17/12/2009 03:14:32

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : insérer un compteur

Fredo42 a écrit :

je vais modifier le script pour qu'il corresponde à tes besoins

ça c'est sympa!


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#56 17/12/2009 03:15:27

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

merci


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#57 17/12/2009 03:18:22

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

si quelqu'un sait simplifier çà je suis preneur!
date('W',mktime ((substr($time,8,2)),(substr($time,10,2)),(substr($time,12,2)),(substr($time,4,2)),(substr($time,6,2)),(substr($time,0,4))))


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#58 17/12/2009 03:24:13

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : insérer un compteur

wa con!


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#59 17/12/2009 03:26:59

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

ben ouais....
j'ai pas trouvé plus simple!
les dates étant stokées sous la forme AAAAMMJJHHMMSS j'ai rien trouvé d'autre pour récupérer le timestamp....


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#60 17/12/2009 03:29:54

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

Mais bon, le principal c'est qu'il est son compteur de visiteurs connectés, aujourd'hui, à la semaine, au mois, à l'année et total....


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#61 17/12/2009 03:38:03

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

Fredo42 a écrit :

si quelqu'un sait simplifier çà je suis preneur!
date('W',mktime ((substr($time,8,2)),(substr($time,10,2)),(substr($time,12,2)),(substr($time,4,2)),(substr($time,6,2)),(substr($time,0,4))))

après réflexion, $time étant l'heure actuelle, date('W') se suffit à lui-même....
reste toujours le même pb pour $valeur...

Bonne nuit....

Dernière modification par Fredo42 (17/12/2009 03:39:31)


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#62 17/12/2009 03:40:21

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : insérer un compteur

t'es un acharné toi, je te reconnais bien là wink
bonne nuit


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#63 17/12/2009 03:44:59

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

pondre un script après 2 nuits blanches, et 3 journées de boulot c'est hard.....
mais bon j'arrive encore à m'auto-corriger, c'est bon signe!
Mais là, stop!
Dodo!


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#64 18/12/2009 20:18:37

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

Le script ne fonctionne pas comme il faut...
je regarderai à tête reposée....


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#65 18/12/2009 22:20:36

Satanas
Membre
Inscription : 27/01/2008
Messages : 84
Site Web

Re : insérer un compteur

Merci davyk pour l'appréciation concernant mon site.

Ben Fredo, grand respect et très admiratif de ton travail.
Un grand merci à toi. Maintenant, on passe à la phase de test grandeur nature. A voir comment ça va fonctionner.
Enfin, en attendant c'est en ligne et je vous invite à passer simplement pour faire monter le compteur : Mon petit zite qui a du chien comme dirait davyk ! wink

Et concernant le format de la date, ceci n'a pas d'incidences sur le compteur. L'essentiel est que çà fonctionne. Je ne compte pas récupérer la date dans le bloc "Visites". Je l'ai déjà en entête du site.

Bonne soirée à vous tous et passez de bonnes fêtes.

Hors ligne

#66 18/12/2009 22:25:18

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

merci satanas mais le script n'est pas juste....
j'ai un peu de travail à faire dessus encore... j'espère pouvoir le boucler cette nuit


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#67 19/12/2009 01:38:37

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

voilà j'ai modifié le script, je l'ai testé en local en changeant la date système et ça à l'air de fonctionner correctement...

<?php

/*
* Si le fichier où l'on stock,
* les données n'existe pas encore
* on le crée.
*/
$fichier = '.htcompteurtest';
if( !file_exists($fichier) ) {
$fp = fopen($fichier, "w");
fwrite($fp, serialize(array()));
fclose($fp);
}

$argument_visitestotal = 'visitestotal';
$argument_visitessemaine = 'visitessemaine';
$argument_visitesmois = 'visitesmois';
$argument_visitesan = 'visitesan';
$ip = $_SERVER['REMOTE_ADDR'];
$time = date('YmdHis');

/*
* Récupération des données du
* compteur précédemment stockées.
*/
$lignes = file($fichier);
$donnees = unserialize($lignes[0]);

/*
* Pour chaque clés du tableau de données
* qui ne soit pas attribuée aux visite et aux requêtes
* si la valeur correspond à une date antérieur
* au même jour, on supprime l'ip du visiteur.
*/
foreach( $donnees as $cle => $valeur )
{
if( substr($valeur, 0, 8) != substr($time, 0, 8) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
unset($donnees[$cle]);
}
}
/*
* Si l'ip n'est pas encore enregistrée,
* on incrémente la valeur du nombre de visites
* et on ajoute l'ip dans le tableau accompagné
* de la date et de l'heure de l'exécution.
*/
if( !$donnees[$ip] ) {
$donnees[$argument_visitestotal]++;

if((substr($time,0,4)) == (substr($valeur,0,4)) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitesan]++;
} else { $donnees[$argument_visitesan]=1;}

if((substr($time,4,2)) == (substr($valeur,4,2)) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitesmois]++;
} else { $donnees[$argument_visitesmois]=1;}

if(date('W',mktime ((substr($time,8,2)),(substr($time,10,2)),(substr($time,12,2)),(substr($time,4,2)),(substr($time,6,2)),(substr($time,0,4)))) == (date('W',mktime ((substr($valeur,8,2)),(substr($valeur,10,2)),(substr($valeur,12,2)),(substr($valeur,4,2)),(substr($valeur,6,2)),(substr($valeur,0,4))))) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitessemaine]++;
} else { $donnees[$argument_visitessemaine]=1;}

$donnees[$ip] = $time;
}
/*
* Si l'ip est déjà enregistrée,
* on met à jour la date et l'heure.
*/
else {
$donnees[$ip] = $time;
}

/*
* On effectue un petit report de variable
* pour une utilisation ultérieur plus aisée.
*/
$nb_visiteurstotal = $donnees[$argument_visitestotal];
$nb_visiteursan = $donnees[$argument_visitesan];
$nb_visiteursmois = $donnees[$argument_visitesmois];
$nb_visiteurssemaine = $donnees[$argument_visitessemaine];
$nb_aujourdhui = count($donnees)-4;

/*
* On stock le tableau dans le fichier de données
* en écrasant sa valeur précédente.
*/
$fp = fopen($fichier,"w");
fwrite($fp, serialize($donnees));
fclose($fp);

/*
* On affiche les résultats du compteur.
*/
echo "visites totales: ".$nb_visiteurstotal.'<br/>';
echo "cette année: ".$nb_visiteursan.'<br>';
echo "ce mois: ".$nb_visiteursmois.'<br>';
echo "cette semaine: ".$nb_visiteurssemaine.'<br>';
echo "aujourd'hui: ".$nb_aujourdhui.'<br/>';
?>

Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#68 19/12/2009 09:31:38

Satanas
Membre
Inscription : 27/01/2008
Messages : 84
Site Web

Re : insérer un compteur

Salut Fred,

bon, j'ai mis à jour : on va voir comment tout cet ensemble se comporte.
Je te tiens au courant.

Bonne journée à toi

Hors ligne

#69 30/12/2009 21:09:37

bvffalo73
Membre
Inscription : 16/02/2007
Messages : 56

Re : insérer un compteur

en plus court c'est peut être:

date('W', mktime(0, 0, 0, substr($valeur,4,2), substr($valeur,6,2), substr($valeur,0,4)))

(et oui, le relou est de retour ... ;p)

Hors ligne

#70 31/05/2010 23:42:54

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

Satanas, le compteur sur le site http://uv7ab.free.fr/ affiche des valeurs qui ne me semble pas bien logique...
as-tu fais des modifs ou s'agit-il d'un bug?

Edit: Idem sur http://satanas.templates.free.fr/

Dernière modification par Fredo42 (31/05/2010 23:43:14)


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#71 02/06/2010 21:08:17

Satanas
Membre
Inscription : 27/01/2008
Messages : 84
Site Web

Re : insérer un compteur

Bonsoir Fredo42

aucune modification aucune maj. Absolument rien.
Il est vrai que je constate que le nombre à la semaine est supérieur au nombre de visites au mois.

Que faire ?

Hors ligne

#72 02/06/2010 21:19:46

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

semaine > mois c'est normal car le mois a commencé mardi et la semaine lundi
par contre visites mois=visites année pas normal
visite année<visite semaine pas normal non plus

fais un copier/coller du code, je vais regarder


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#73 03/06/2010 11:15:01

Satanas
Membre
Inscription : 27/01/2008
Messages : 84
Site Web

Re : insérer un compteur

Bonjour Fredo,
Voici le code (issu du site : uv7ab.free.fr. Je te donne cette Url, car il y a pas mal de passage ces temps-ci)

<?php

/*
* Si le fichier où l'on stock,
* les données n'existe pas encore
* on le crée.
*/
$fichier = '.htcompteur';
if( !file_exists($fichier) ) {
$fp = fopen($fichier, "w");
fwrite($fp, serialize(array()));
fclose($fp);
}

$argument_visitestotal = 'visitestotal';
$argument_visitessemaine = 'visitessemaine';
$argument_visitesmois = 'visitesmois';
$argument_visitesan = 'visitesan';
$ip = $_SERVER['REMOTE_ADDR'];
$time = date('YmdHis');

/*
* Récupération des données du
* compteur précédemment stockées.
*/
$lignes = file($fichier);
$donnees = unserialize($lignes[0]);

/*
* Pour chaque clés du tableau de données
* qui ne soit pas attribuée aux visite et aux requêtes
* si la valeur correspond à une date antérieur
* au même jour, on supprime l'ip du visiteur.
*/
foreach( $donnees as $cle => $valeur )
{
if( substr($valeur, 0, 8) != substr($time, 0, 8) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
unset($donnees[$cle]);
}
}
/*
* Si l'ip n'est pas encore enregistrée,
* on incrémente la valeur du nombre de visites
* et on ajoute l'ip dans le tableau accompagné
* de la date et de l'heure de l'exécution.
*/
if( !$donnees[$ip] ) {
$donnees[$argument_visitestotal]++;

if((substr($time,0,4)) == (substr($valeur,0,4)) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitesan]++;
} else { $donnees[$argument_visitesan]=1;}

if((substr($time,4,2)) == (substr($valeur,4,2)) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitesmois]++;
} else { $donnees[$argument_visitesmois]=1;}

if(date('W',mktime ((substr($time,8,2)),(substr($time,10,2)),(substr($time,12,2)),(substr($time,4,2)),(substr($time,6,2)),(substr($time,0,4)))) == (date('W',mktime ((substr($valeur,8,2)),(substr($valeur,10,2)),(substr($valeur,12,2)),(substr($valeur,4,2)),(substr($valeur,6,2)),(substr($valeur,0,4))))) &&
$cle != $argument_visitestotal &&
$cle != $argument_visitessemaine &&
$cle != $argument_visitesmois &&
$cle != $argument_visitesan ) {
$donnees[$argument_visitessemaine]++;
} else { $donnees[$argument_visitessemaine]=1;}

$donnees[$ip] = $time;
}
/*
* Si l'ip est déjà enregistrée,
* on met à jour la date et l'heure.
*/
else {
$donnees[$ip] = $time;
}

/*
* On effectue un petit report de variable
* pour une utilisation ultérieur plus aisée.
*/
$nb_visiteurstotal = $donnees[$argument_visitestotal];
$nb_visiteursan = $donnees[$argument_visitesan];
$nb_visiteursmois = $donnees[$argument_visitesmois];
$nb_visiteurssemaine = $donnees[$argument_visitessemaine];
$nb_aujourdhui = count($donnees)-4;

/*
* On stock le tableau dans le fichier de données
* en écrasant sa valeur précédente.
*/
$fp = fopen($fichier,"w");
fwrite($fp, serialize($donnees));
fclose($fp);

/*
* On affiche les résultats du compteur.
*/
/* echo "Actuellement en ligne : ".$visiteuractuel.'<br/>'; //à supprimer si pas besoin du nombre de connecté */
echo '<table>'."\n";
      echo '<tr>';
        echo '<td width="115px">Aujourd\'hui :</td>';
        echo '<td width="60px" align="right">'.$nb_aujourdhui.'</td>';
      echo '</tr>'."\n";
      echo '<tr>';
        echo '<td width="115px">Cette semaine :</td>';
        echo '<td width="60px" align="right">'.$nb_visiteurssemaine.'</td>';
      echo '</tr>'."\n";
      echo '<tr>';
        echo '<td width="115px">Ce mois :</td>';
        echo '<td width="60px" align="right">'.$nb_visiteursmois.'</td>';
      echo '</tr>'."\n";
      echo '<tr>';
        echo '<td width="115px">Cette année :</td>';
        echo '<td width="60px" align="right">'.$nb_visiteursmois.'</td>';
      echo '</tr>'."\n";
        echo '<tr>';
        echo '<td width="115px">Total des visites :</td>';
        echo '<td width="60px" align="right">'.$nb_visiteurstotal.'</td>';
      echo '</tr>'."\n";
echo '</table>'."\n";
?>

Dernière modification par Satanas (03/06/2010 11:19:10)

Hors ligne

#74 03/06/2010 11:59:04

Fredo42
Membre
Inscription : 03/10/2009
Messages : 470
Site Web

Re : insérer un compteur

Le code est bon donc normalement ça devrait être bon pour le calcul des visites. Cependant dans ton tableau d'affichage, tu prends la valeur de $nb_visiteursmois pour les visites de cette année au lieu de $nb_visiteursan
Avec cette modif ton compteur devrait retrouver des valeurs logiques!


Mieux vaut poser une question et passer pour un con, que se taire et le rester...

Hors ligne

#75 03/06/2010 17:51:26

Satanas
Membre
Inscription : 27/01/2008
Messages : 84
Site Web

Re : insérer un compteur

Oups, c'est vrai. M'en va corriger ce soir. Merci.

Hors ligne

Pied de page des forums