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

PHP & Base de données Discussion :

PDO - récupérer le nombre de visiteurs [PDO]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut PDO - récupérer le nombre de visiteurs
    Bonjour, j'essaye de récupérer la valeur du nombre de visiteurs mais j'ai cette erreur :

    D’abord le script :
    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
    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 agride_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
        ));
     
    	$list_visiteur = $query->fetchAll(PDO::FETCH_ASSOC);
    }
    ET j'ai cette erreur :
    Fatal error: Call to undefined method PDO::fetchAll() in C:\wamp64\www\function\compteur_visite.php on line 46
    Call Stack
    Merci de m'aider

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Hello,

    Tu fais un INSERT, pas un SELECT, donc tu n'aura pas de résultat à exploiter.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    es-tu sûr de COMPRENDRE ce que tu fais ? ce qui est écrit dans le code ?


    Pourtant, il y a des explications dans ce code... : "Mise à jour de la base de données",...

    On voit bien qu'il n'est pas écrit : "récupération du nombre de visiteurs"....
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT pages_vues FROM agride_stats_visites WHERE ip = :ip"

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pour compléter les réponses de mes collègues : tu fais d'abord la mise à jour (avec la requête INSERT) et ensuite tu fais la récupération du nombre de visite (avec une requête SELECT)

    Que compte le compteur ? le nombre de visites totales ? le nombre de visiteurs uniques ? depuis la nuit des temps ? à une date donnée ?

    @jreaux : non, là tu récupères le nombre de pages visitées par un visiteur donné (ou plus exactement une IP données)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Invité
    Invité(e)
    Par défaut
    @Celira

    compter_visite =
    • 1-"compter les nombre de visiteurs"
    • 2- ou "compter le nombre de visites de CE visiteur" ?



    Qui a raison ?

    Quel suspens !...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    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
    // Fonction qui permet de mettre à jour le compteur de visites
    function compter_visite()
    {
        global $pdo;
     
        $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
     
    	$visiteur = $pdo->prepare("SELECT COUNT(*) as nb FROM agride_stats_visites WHERE ip='".$ip."'");
    	$visiteur->execute();
    	$list_visiteur = $visiteur->fetch(PDO::FETCH_ASSOC);
    	$nb = $list_visiteur['nb'];
     
    	if ($nb == 0 || $nb == NULL || $nb == "")
    	{
    		echo "echo";
    		$query = $pdo->prepare("
    			INSERT INTO agride_stats_visites (ip , date_visite , pages_vues) VALUES ('".$ip."' , '".$date."' , 1)
    		");
    		$query->execute();
    	}
    	elseif ($nb >= 0)
    	{
    		echo "Il existe deja cette IP";
    	}
    }

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($nb == 0 || $nb == NULL || $nb == "")
    s'écrit plus simplement :

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    Reponse 1 donc, je pense pas avoir commis d'erreur dans ce simple bout de code !

  9. #9
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$visiteur = $pdo->prepare("SELECT COUNT(*) as nb FROM agride_stats_visites WHERE ip='".$ip."'");
    Ca, ce n'est pas une requête correctement préparée...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		$query = $pdo->prepare("
    			INSERT INTO agride_stats_visites (ip , date_visite , pages_vues) VALUES ('".$ip."' , '".$date."' , 1)
    		");
    Ca, non plus.

    Tu n'as pas compris le principe.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    A la base si, mais j'ai enlevé pour eviter toute erreur.
    Je remetttrai après quand j'aurai mes ip

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    A ta place, je le remettrai tout de suite. Ce n'est pas parce que la donnée à insérer n'est pas la bonne qu'il faut faire n'importe quoi pour l'insérer.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problem Linux>php>services
    Par sebeni dans le forum Linux
    Réponses: 4
    Dernier message: 25/01/2006, 15h05
  2. Problem de php
    Par flambo88 dans le forum Langage
    Réponses: 9
    Dernier message: 14/01/2006, 21h03
  3. [PostgreSQL] [PostgreSQL] Probleme entre PHP & PostgreSQL
    Par flo78 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/01/2006, 10h51
  4. [SGBD] Probleme Avec Php et Mysql
    Par junior258 dans le forum Installation
    Réponses: 2
    Dernier message: 20/09/2005, 10h39
  5. probleme postgresql php
    Par jbaudens dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 14/04/2005, 12h46

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