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 :

Compteur de vues PHP


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut Compteur de vues PHP
    Bonjour, je sollicite votre aide, si vous pouvez m'apporter des réponses
    j'essaie faire compter le nombre de vues d'une sous-catégorie choisie de ma page d'affichage single.php lorsque celle-ci (la page) est actualisée.
    Le problème c'est que le code de la page single s'efface lorsque le compteur de vues est exécuté. Tout le code est donc remplacé par un chiffre. Or je cherche à le faire apparaitre à côté des informations de l'annonce, (i.e le prix,, categorie, date...).

    Voici mon code:
    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
     
     
      echo "<span class='category'>" . $anouncement['CATEGORIE'] . "</span>";
            echo "<span class='title'>" . $anouncement['titre'] . "</span>";
            echo "<span class='price'>" . $anouncement['prix'] . "</span>";
            echo "<span class='date'>" . $anouncement['created_date'] . "</span>";
     
          $f= 'single.php';
          $nbre= fopen($f, "r");
          $counter= (int) fread($nbre);
     
     
          $counter++;
     
          echo("counter");
          $nbre= fopen($f, "w");
          fwrite($nbre, $counter);
          fclose($nbre);
    Suis-je sur la bonne voie, ou faudrait mieux l'ajouter dans ma table annonces ou categories?

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Le problème c'est que le code de la page single s'efface lorsque le compteur de vues est exécuté.
    Ben, c'est normal puisque tu y écris $counter !
    Il faut créer un fichier spécial qui contiendra ton compteur de vues.
    Si tu veux un compteur par catégorie alors il faudra autant de fichiers que de catégories, ou bien structurer un fichier unique pour qu'il puisse accueillir plusieurs valeurs (JSON, INI, XML), ou bien utiliser ta BdD (ex. une colonne "vues" à ta table de catégories).

    Là tu n'affiches pas un nombre de vues, mais le littéral (la chaîne) "counter".

    fread() prend 2 arguments et non 1 seul => https://php.net/fread

    Pour lire/écrire dans des fichiers il y a file_get/put_contents().

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut
    Bonjour Séb et merci pour ta réponse. Je cherche à faire compter le nombre de vue de l'annonce. Je ne m'y connais pas en JSON INI... .
    Donc comme tu as dit, la dernière option est meilleure en créant une colonne vues dans ma table annonces (liée à la table categories) afin de compter le nombre de vues de chaque annonce, comme je peux faire dans l'affichage (auprès de 'date', 'prix'...) de type: echo "$annonce['vues']".

    Choisissant donc cette dernière option, comment faire apparaitre "vues" dans ma fonction?

    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
    function getAnnnonce($idad){
      global $bdd;
      $sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr';
      $sql = ' SELECT  A.*
                      ,C.nom_'.$sql_lang.' AS CATEGORIE
                      ,V.ville_'.$sql_lang.' AS VILLE
               FROM annonces A
               LEFT JOIN categories C ON C.id = A.id_categorie
               LEFT JOIN villes V ON V.id = A.id_ville
               WHERE A.id= :idad
                ';
      try {
        $req = $bdd->prepare($sql);
        $req->execute( array(':idad'=>$idad) );
        $res = $req->fetch();
     
      } catch (Exception $e) {
        echo "Erreur dans la requête " . $sql;
      }
      // le temps des tests pour voir le résultat
      return $res;
    }
    Faut-il une nouvelle fonction pour vues? Si oui, comment procéder pour faire compter dans la bdd?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut
    Pour ceux qui ça pourrait intéressé plus tard, voici la solution.

    J'ai crée une colonne vues dans ma table annonces ayant une valeur tel que défini=0. Ensuite dans la page single.php où l'annonce choisie s'affiche, j'ai fait ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     //Compteur de vue pour chaque annonce
     $idad = !empty($_GET['id']) ? trim($_GET['id']) : null;
     $nbrevues= "UPDATE annonces SET vues =vues+1 WHERE id= '$idad' ";
     $stmt= $bdd->prepare($nbrevues);
    $stmt->execute();
    Ce qui donne une vue de plus lorsque la page est actualisée.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/03/2012, 10h25
  2. Compteur de visites PHP - PHPMyAdmin
    Par NG_Neptune dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/09/2011, 16h49
  3. [MySQL] Compteur de téléchargement PHP Mysql
    Par Shilong dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/06/2011, 22h45
  4. [MySQL] compteur incrémentielle en php
    Par dorian-ya67 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/05/2011, 11h32
  5. Compteur de vues, INSERT & UPDATE
    Par timathias dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/09/2008, 15h50

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