Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: PrimFX, theagar
Auteur Sujet: Compter nombre de vue

theagar

Messages: 9

Bonjour @PrimFX,

Je me demandais comment tu comptais le nombre de vue des articles/topics/...
  • Chaque fois que quelqu'un clique sur le lien sa rajoute une vue dans ta base de données?
  • Chaque fois que quelqu'un visite la page tu rajoutes une vue dans ta base de données?
  • ...
Je te remercie déjà d'avance,
Julien
Publicité

PrimFX
Membre Premium

Messages: 113

Salut !

Personnellement je compte le nombre de vues lorsque quelqu'un visite une page et non lorsqu'une personne clique sur un lien pour visiter cette page Clin d'oeil

Après, il existe de nombreuses façons de faire, et tout dépend de la structure de ton site, de ta base de donnée, etc. Aucune façon n'est meilleure qu'une autre, tout dépend du contexte !

En espérant avoir pu t'aider Clin d'oeil

@+

PS: Vu qu'on est sur un forum, tente de t'adresser à toute la communauté plutôt que directement à moi. En plus, ça te permettrait d'avoir plus d'avis et d'autres pistes à explorer pour trouver une solution adéquate à ton problème 8| Merci !

theagar

Messages: 9

D'accord,

Et vos scripte ils ressemblent à quoi?
Parce que si je fais comme @PimFX, et l'utilisateur rafraîchit la page, ça va compter plein de vues...

Merci d'avance ! Clin d'oeil

PrimFX
Membre Premium

Messages: 113

Salut !

Pour que chaque refresh de page ne compte pas une vue supplémentaire, tu as plusieurs possibilités. En voici deux:
  • Tu enregistres l'IP de l'utilisateur qui a visité ta page avec $_SERVER['REMOTE_ADDR'] et tu n'acceptes qu'une "vue" par IP
  • Tu peux ajouter en plus de l'IP un timer, histoire d'autoriser plusieurs vues par IP mais avec un certain temps d'intervalle... L'exemple ci-dessous fonctionne avec ce principe et un intervalle minimum de 30 minutes pour compter une nouvelle vue. Je te laisse l'étudier, l'adapter selon tes besoins, et poser tes questions s'il y en a Clin d'oeil
<?php

// $id_article = L'id de ton article / Ce sur quoi tu veux compter tes vues Tire la langue

$unixactual = date('U');
$userip = $_SERVER['REMOTE_ADDR'];
$userlastview = $bdd->prepare('SELECT * FROM vues WHERE ip = ? AND id_article = ? ORDER BY id DESC LIMIT 0,1');
$userlastview->execute(array($userip,$id_article));
$userlastviewis = $userlastview->rowCount();
if($userlastviewis==1) {
  $inactive_minutes = 30;
  $inactive_secondes = $inactive_minutes*60;
  $userlastviewunixtime = $userlastview->fetch();
  $userlastviewunixtime = $userlastviewunixtime['unix_time'];
  if($unixactual-$inactive_secondes > $userlastviewunixtime) {
    $addview = $bdd->prepare('INSERT INTO vues(ip,id_article,unix_time) VALUES (?,?,?)');
    $addview->execute(array($userip,$id_article,$unixactual));
  }
} else {
  $addview = $bdd->prepare('INSERT INTO vues(ip,id_article,unix_time) VALUES (?,?,?)');
  $addview->execute(array($userip,$id_article,$unixactual));
}
$nombre_vues = $bdd->prepare('SELECT id FROM vues WHERE id_article = ?');
$nombre_vues->execute(array($id_article));
$nombre_vues = $nombre_vues->rowCount();

?>
@+

theagar

Messages: 9

Tu sais poster une photo de la base de données stp?

Merci! Sourire

PrimFX
Membre Premium

Messages: 113

Voilà un petit screen de la structure de la table "vues" de ma base de donnée Clin d'oeil



Veuillez vous connecter ou créer un compte pour poster une réponse