Compter nombre de vue
- Accueil
- Forum
- Programmation
- PHP
- Compter nombre de vue
theagar Le 4 avril 2016 à 20:30 (Édité le 25 janvier 2019 à 17:50)
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?
- ...
Julien
PrimFX Le 5 avril 2016 à 00:45 (Édité le 1 janvier 1970 à 01:00)
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 😉
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 😉
@+
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 Le 5 avril 2016 à 09:18 (Édité le 1 janvier 1970 à 01:00)
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 ! 😉
PrimFX Le 5 avril 2016 à 13:21 (Édité le 1 janvier 1970 à 01:00)
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 😉
<?php
// $id_article = L'id de ton article / Ce sur quoi tu veux compter tes vues 😋
$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 Le 5 avril 2016 à 14:14 (Édité le 1 janvier 1970 à 01:00)
Merci! 😀
PrimFX Le 5 avril 2016 à 14:56 (Édité le 1 janvier 1970 à 01:00)