IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

nombre de vue


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 38
    Points : 8
    Points
    8
    Par défaut nombre de vue
    Bonjour, c'est encore moi le GROS nul
    voilà j'ai encore un petit problème j'ai fait une table dans ma BDD pour avoir le nombre de vue sur une page de mon site , mais je n’obtient rien du tout ...
    Esce car mon site c'est pas encore mis en ligne et c'est donc normal ? ! ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=vue', 'root', '');
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    ?>
    <?php
    // Fonction qui permet de mettre à jour le compteur de visites
    function compter_visite(){
        // On va utiliser l'objet $pdo pour se connecter, il est créé en dehors de la fonction
        // donc on doit indiquer global $pdo; au début de la fonction
        global $pdo;
     
        // On prépare les données à insérer
        $ip   = $_SERVER['REMOTE_ADDR']; // L'adresse IP du visiteur
        $date = date('Y-m-d');           // La date d'aujourd'hui, sous la forme AAAA-MM-JJ
     
        // Mise à jour de la base de données
        // 1. On initialise la requête préparée
        $query = $pdo->prepare("
            INSERT INTO stats_visites (ip , date_visite , pages_vues) VALUES (:ip , :date , 1)
            ON DUPLICATE KEY UPDATE pages_vues = pages_vues + 1
        ");
        // 2. On execute la requête préparée avec nos paramètres
        $query->execute(array(
            ':ip'   => $ip,
            ':date' => $date
        ));
    }
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Toi tu mets les mots de passe dans un fichier .txt et le compteur de visite dans la bdd ?

    Plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function compter_visite(){
        global $pdo;
        $query = $pdo->prepare("
            INSERT INTO stats_visites (ip , date_visite , pages_vues) VALUES (:ip , CURDATE(), 1)
            ON DUPLICATE KEY UPDATE pages_vues = pages_vues + 1
        ");
          $query->execute(array(':ip'   =>  $_SERVER['REMOTE_ADDR']));
    }
    mais il ne faut pas oublier d'appeller ta fonction quelque part.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 38
    Points : 8
    Points
    8
    Par défaut
    bonsoir sabotage je suis entrain de tout remettre sur ma BDD ..... !
    comment appeler ma fonction ?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 38
    Points : 8
    Points
    8
    Par défaut
    Bonjour, j'ai finalement changer d'avis et j'ai mis le compteur dans un fichier .txt pour ne pas remplir mon sql !

    voilà comment j'ai procéder :
    Voici ce que j'ai réussi a faire mais il me compte +1 visite a chaque réactualisation ! ?

    Je voudrais qu'il compte +1 par visiteur tous les 24H ! ?

    Et il m'indique dans mon fichier .txt seulement des 111111....a chaque (1) = une visite ? Comment faire pour changer la valeur directement par 2visite = (2) au lieux de =11 .... ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
    if(file_exists('compteur_visites.txt'))
    {
            $compteur_f = fopen('compteur.txt', 'r+');
            $compte = fgets($compteur_f);
    }
    else
    {
            $compteur_f = fopen('compteur.txt', 'a+');
            $compte = 0;
    }
    if(!isset($_SESSION['compteur_de_visite']))
    {
            $_SESSION['compteur_de_visite'] = 'visite';
            $compte++;
            fseek($compteur_f, 0);
            fputs($compteur_f, $compte);
    }
    fclose($compteur_f);
    echo '<strong>'.$compte.'</strong> visites.';
    ?>

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand tu seras décidé a utiliser une base de données, on pourra commencer à travailler serieusement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 38
    Points : 8
    Points
    8
    Par défaut
    Je me suis décider !!! j'ai tous remit sur base de donnée ! a par le compteur car on ma dit qu'il était préférable de faire un fichier .txt ? ! Mais si tu préfére par une bdd sa mes égal moi du moment que j'y arrive,? !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 38
    Points : 8
    Points
    8
    Par défaut une visite par ip
    bonsoir, voilà j'ai finit par refaire tous mon code et ça donne ça :

    Mais maintenant je ne ses pas comment faire car la a chaque réactualisation sa compte +1 a chaque foit moi je voudrais +1 tous les 24H par ip ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                   <?php
    $monfichier = fopen('compteur.txt', 'r+');
     
    $pages_vues = fgets($monfichier); // On lit la première ligne (nombre de pages vues)
    $pages_vues++; // On augmente de 1 ce nombre de pages vues
    fseek($monfichier, 0); // On remet le curseur au début du fichier
    fputs($monfichier, $pages_vues); // On écrit le nouveau nombre de pages vues
     
    fclose($monfichier);
     
    echo '<p>Cette page a été vue ' . $pages_vues . ' fois !</p>';
    ?>

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    visiblement tu n'es pas très décidé pour la base de données.

    Si tu veux un seul compte par jour, il faut évidemment stocker la date de chaque visite par ip et la vérifier avec chaque incrémentation.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Comme le dit Sabotage :
    - tu stockes chaque visite
    - Lors d'une nouvelle visite tu check l'ip dans les visites précédentes via une req Sql
    - Si pas de résultat -> nouveau visiteur donc +1 visite
    - Si résultat :
    - si la date de la visite +24h > date du jour -> Visiteur trop récent, tu sors du script sans incrémenter
    - sinon: la date de la visite +24 < date du jour -> visiteur de plus de 24h , tu incrémentes.

    Voila

Discussions similaires

  1. Nombre de vues et tables système
    Par concordus dans le forum Administration
    Réponses: 3
    Dernier message: 03/02/2011, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo