Pages :
Bonjour.
Je voudrais savoir comment faire pour faire un compteur de visites. C'est-à-dire que j'ai une partie ADMIN et je voudrais que dans celle-ci il y ait le nombre de clics sur une page (par exemple, Accueil ou bien le nombre de fois où le bouton "réserver" a été cliqué).
J'ai regardé de nombreux tutos mais aucuns résultats Smiley decu . Aidez-moi s'il vous plaît !!!
Oui je sais (sauf pour ajax) mais comment procéder ? Je ne connais pas bien tout ce qui est SQL et je n'y connais absolument rien aux codes AJAX.
Modérateur
Et l'eau,

Jean-Pierre-Bruneau a écrit :

Il faut obligatoirement avoir PHP et MySQL.


Non, tu n'es pas obligé d'avoir MySql. Un simple fichier JSON peut faire l'affaire !

Jean-Pierre-Bruneau a écrit :
Si tu veux contrôler les actions sur une page il vaut mieux opter Pour Ajax.


Non, puisqu'on peut controller ça avant l'envoie de la vue. Parce que de toute manière il y aura un refresh. Donc si tu utilises de l'Ajax, ça fera en tout double requêtes :
- une requête pour afficher la vue
- une requête pour mettre à jour le compteur de visite.

@Rixy : c'est pour afficher sur chaque page ou c'est pour tes stats ? Est ce que ton site à beaucoup de vues (je ne parle pas de visiteur mais du nombre de pages) ? Ta partie admin, est elle faite avec un outil ? Si oui, lequel ?
Modifié par niuxe (25 May 2020 - 11:21)
Bonjour niuxe. Merci pour ta réponse.
En fait, ce que je veux faire, c'est que les "clients" peuvent voir les stats du site en tant qu'administrateurs. Ils veulent surtout savoir combien de personnes ont cliqués sur le lien pour aller à l’accueil, sur la page réservations ...
C'est pourquoi j'ai organisé une page exprès pour eux, avec leurs propres mots de passe. Je voulais organiser ça comme ceci :
nombre de clics sur :
accueil :(nombre)
la région : (nombre)
etc

donc il faudrait pouvoir voir les statistiques du site d'une autre page qui seraient affichées sur encore une autre page (combien il y a eu de clics sur intelle page et renvoyer la valeur sur une autre page).
Merci @niuxe
Modérateur
Bonjour,

Apparemment tu as une base de données dans laquelle tu peut stockées tes données, je m'appuierais la dessus pour commencer.

Il te suffit d'un champs où stocker un entier positif par page/uri que tu souhaites suivre et éventuellement filtrer le compteur sur l'IP du visiteur (ne pas compter les admins logués par exemple) dans le temps (compté une nouvelle visite 24 heures aprés la dernieres)

Si tu ne souhaites pas filtrer les IP et un compteur flatteur vite fait, mal fait et pas pro, il y a fopen avec un fichier txt :un exemple ici -> https://www.php.net/manual/fr/function.fopen.php#37553 (peut servir tout au plus d'exemple en attendant de développer quelque chose de plus efficient.)

Cdt
Modérateur
Jean-Pierre-Bruneau a écrit :
Désolé, mais en aucun cas Ajax ne fait de refrech justement c'est son but !, je supposes qu'étant modérateur tu dois savoir au moins cela non ?
Et Json est un fourre-tout en fait du javascript compilé ... pourquoi s'embarquer sur ce terrain.
Rixy , si tu veux je peut te coder ça vite fait à prés tu adaptera ... as-tu un URL ?


Tu n'as pas lu ce que j'ai écris. Imagine le scénario suivant Smiley cligne :
- je clique sur le lien
- la nouvelle page se charge
- je fais une requête ajax.....

Donc 2 requêtes !

Quand au json, c'est nettement mieux si tu as plusieurs pages. Parce qu'un fichier texte pour savoir où est la donnée de telle page et ensuite mettre à jour la donnée, bonne chance ! Le fichier json a ses limites bien sûr. Si le site est volumineux, ça vaut pas le coup. La base de données est le mieux. Par contre , pour quelques pages le fichier plat sera plus rapide ! Au passage, le json n'est pas fait que pour le JS. C'est un format d'échange de données.


[
    {
        "page": "mon/url/une-page.php",
        "compteur": 3
    },
    {
        "page": "mon/url/une-autre-page.php",
        "compteur": 1
    },
]


Le principe est simple :
- avant le chargement de la page, (dans le controller) vérifier que la page existe dans le json. Si telle est le cas, on ajoute à la valeur de la clef 1 sinon, on initialise un compteur pour cette page.

@Rixy: Sinon, au lieu bricoler un compteur de visite, j'ai de suite pensé à ceci (il y a une version gratuite, enfin j'espère...). Avant, c'était Piwik et avant Pixik c'était phpmyvisite.
Modifié par niuxe (25 May 2020 - 15:34)
S'il vous plaît, je suis débutant et j'ai seulement pris des cours grâce à Udemy, pouvez-vous m'aider à constituer le code.
Modérateur
Pourquoi pas,

Où as tu des difficultés sur les infos fournis précédemment par chacun d'entre nous ?
Comment fonctionnent tes pages pour le moment, est ce fait maison ?
Si oui, comment est construit accueil.php par exemple ?
Comptes tu utilisé des fichiers texte (json/csv/txt/...) ou une base de donnée ?
As tu commencé quelque chose ?


Cordialement

p.s. si tu partages des codes de connexions, penses à retirer login et mot de passes.
- Mes pages sont belles et bien faites maison.
- C'est construit principalement avec du HTML et du CSS. (photo ci-dessous).
Je penses que je vais utiliser un fichier texte de type json.
- Et pour l'instant, je n'ai rien commencé car je n'ai pas appris à faire des choses comme ça, je vous rappelle que j'ai pris seulement des cours sur la plateforme Udemy, je ne suis qu'au collège.
Modérateur
okay, donc tu part de rien quasiment.

Ton code n'est que du HTML, pas de php à l'horizon Smiley smile .

Quel type hébergement as tu ?
Alors en fait j'ai des balises php mais elles sont vides.
Je n'ai pas encore d'hébergement car c'est du développement web et donc ce n'est pas une mise à jour, je suis en train de <b>CREER</b> le site à partir de 0.
Je voulais mettre la fonction "administrateurs" parce qu'on a pas terminé la rédaction du site, donc je suis pénaliser sur l'avancement des pages du site.
Modérateur
le fichier json (counter.json):

[]


le fichier php (faire un include et reporter la variable):

<?php 
    function get_json($file){
        if(!file_exists($file)){
            throw new Exception("Ce fichier n'existe pas");
        }
        return json_decode(file_get_contents($file),true);
    }
    function set_json($file){
        $json = get_json($file);
        $found = false;
        foreach ($json as $index => $row) {
            if($row['page'] === $_SERVER['SCRIPT_NAME']){
                $json[$index]['counter'] = $row['counter'] + 1;
                $found = true;
                break;
            }
        }
        if($found === false){
            $json[] = [
                'page' => $_SERVER['SCRIPT_NAME'],
                'counter' => 1,
            ];
        }

        $ressource = fopen($file, "w");
        fwrite($ressource, json_encode($json));
        fclose($ressource);      
    }
    try{
        header('Content-Type: text/html; charset=utf-8');
        $file = "./counter.json";
        //récupère données
        $current_page = current(array_filter(get_json($file), function($row){
            return $row['page'] === $_SERVER['SCRIPT_NAME'];
        }));
        // ajoute 1 au compteur 
        set_json($file);
        //affiche compteur
        echo $current_page['counter'] ?? 0;
        // version compatible avec la ligne précédente
        // echo !empty($current_page['counter'])? $current_page['counter'] : 0;
    }catch(Exception $e){
        echo $e->getMessage();
    }
?>

Modifié par niuxe (25 May 2020 - 19:21)
Meilleure solution
Modérateur
Bonjour Rixy,

As-tu évalué la possibilité d'intégrer Google Analytics au lieu de développer ta propre solution? Tes administrateurs finiront par vouloir en savoir plus que simplement le nombre de clics. Ils finiront par vouloir connaître la provenance des visiteurs, les mots clés qu'ils ont utilisé dans les moteurs de recherche, le taux de rebond, la durée des visites, etc...
Il y aura les deux sauf si google analystics est payant.
Mais mes "clients" veulent le côté pratique et de ne pas devoir ouvrir une application.
Comme cela, ils pourront avoir le nombre de vues juste en ouvrant Firefox et en ouvrant leur site et si ils veulent des données approfondies, ils pourront ouvrir/télécharger Google Analystics... Et puis comme ça je pourrais ajouter depuis cette espace d'autres outils qui ne sont pas disponibles sur une application (interagir avec le site, prenant comme exemple signaler un commentaire même si il y en a pas mais dans l'idée ...). Enfin bref, merci pour les codes, je les essayerais plus tard. Smiley smile
Rixy a écrit :
Il y aura les deux sauf si google analystics est payant.
Mais mes "clients" veulent le côté pratique et de ne pas devoir ouvrir une application.
Comme cela, ils pourront avoir le nombre de vues juste en ouvrant Firefox et en ouvrant leur site et si ils veulent des données approfondies, ils pourront ouvrir/télécharger Google Analystics... Et puis comme ça je pourrais ajouter depuis cette espace d'autres outils qui ne sont pas disponibles sur une application (interagir avec le site, prenant comme exemple signaler un commentaire même si il y en a pas mais dans l'idée ...). Enfin bref, merci pour les codes, je les essayerais plus tard. Smiley smile


Google Analytics offre vraiment énormément de possibilité et est plutôt simple d'utilisation ( durée de session, pays du visiteur, heure de visites et j'en passe ).
Modifié par vzytoi (25 May 2020 - 22:49)
Rixy a écrit :
Il y aura les deux sauf si google analystics est payant.
Mais mes "clients" veulent le côté pratique et de ne pas devoir ouvrir une application.
Comme cela, ils pourront avoir le nombre de vues juste en ouvrant Firefox et en ouvrant leur site et si ils veulent des données approfondies, ils pourront ouvrir/télécharger Google Analystics... Et puis comme ça je pourrais ajouter depuis cette espace d'autres outils qui ne sont pas disponibles sur une application (interagir avec le site, prenant comme exemple signaler un commentaire même si il y en a pas mais dans l'idée ...). Enfin bref, merci pour les codes, je les essayerais plus tard. Smiley smile


https://analytics.google.com/
Modifié par vzytoi (25 May 2020 - 22:48)
Pages :