1. ✅ Apprenez une METHODE qui marche pour votre SEO ! Formation à distance avec Olivier Duffez et Fabien Facériès + aide pour prise en charge du financement
    Rejeter la notice

Compter le nombre de fois ou une page a été vue

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par fabrice88, 3 Juin 2010.

  1. fabrice88
    fabrice88 WRInaute occasionnel
    Inscrit:
    15 Octobre 2007
    Messages:
    317
    J'aime reçus:
    0
    Bonjour,
    en parralele avec mon autre message sur ce forum je voudrait savoir comment faire pour compté le nombre de fois ou un sujet de mon forum aura été vue apr les internautes ?
    J'imaginai faire comme ceci : dans ma table forum_sujet, je rajoute un nouveau champ que je nomme 'vues'.
    ensuite lorsq'un internaute clique sur un sujet pour voir son detail je cré un compteur qui ajoute +1 a chaque ouverture du sujet.

    Est ce que l'idée est bonne ou est ce qu'il faut procéder autrement ?
     
  2. M&B Multimédia
    M&B Multimédia WRInaute passionné
    Inscrit:
    1 Octobre 2009
    Messages:
    1 117
    J'aime reçus:
    0
    Ton idée est bonne... personnellement je ne vois pas comment tu pourrais faire autrement.
     
  3. ZelkiN
    ZelkiN WRInaute occasionnel
    Inscrit:
    27 Juillet 2007
    Messages:
    463
    J'aime reçus:
    0
    En effet tu n'as guerre le choix, et puis la plupart des compteurs sont fait ainsi, après tu peux gérer au niveau des ip pour ne pas compter plusieurs fois la meme page vu au meme utilisateur
     
  4. fabrice88
    fabrice88 WRInaute occasionnel
    Inscrit:
    15 Octobre 2007
    Messages:
    317
    J'aime reçus:
    0
    ok merci bon alors voilà se que je fais :
    Code:
    	//création de la requête SQL:  
    	$sqlvue = "UPDATE forum_sujets SET vue = $vue+1 WHERE id = ".$_GET['id_sujet_a_lire'];  
    	$reqvue = mysql_query($sqlvue); 
    
    lors de la toute premiere ouverture de la page j'ai bien l'incrementation du + 1 qui se fait et j'ai donc mon champ vue qui prend la valeur de 1 au lieu de 0.
    par contre apres sa ne fonctionne plus. si je retourne sur la meme page mon champ vue n'est plus incrémenté il reste à 1.
    :?
     
  5. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 057
    J'aime reçus:
    294
    C'est le "$vue" qui semble bizarre, je sais pas ce qu'il contient, ça devrait plutôt être:

    Code:
    	//création de la requête SQL:  
    	$sqlvue = "UPDATE forum_sujets SET vue = vue+1 WHERE id = ".$_GET['id_sujet_a_lire'];  
    	$reqvue = mysql_query($sqlvue); 
    
     
  6. fabrice88
    fabrice88 WRInaute occasionnel
    Inscrit:
    15 Octobre 2007
    Messages:
    317
    J'aime reçus:
    0
    ah oui zut ! Merci.
    Sa fonctionne.
     
  7. ZelkiN
    ZelkiN WRInaute occasionnel
    Inscrit:
    27 Juillet 2007
    Messages:
    463
    J'aime reçus:
    0
    Euh Spout a raison d'une part, d'autre part attention a la sécurité o_O, ne met jamais un GET pas traité dans une requête SQL !

    Si il s'agit d'un nombre, vérifie le avec un is_numeric, ou au moins met un addslashes($_GET['..']) sinon tu risques d'avoir des problèmes :)

    Bon courage !
     
  8. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 057
    J'aime reçus:
    294
    Pour éviter les comptages multiples il y a un moyen simple (mais pas infaillible):
    - Quand un comptage est fait, envoyer un cookie vers le navigateur du visiteur.
    - Sauvegarder la dernière IP qui a incrémenté le compteur.
    - Avant chaque incrémentation du compteur, vérifier si cookie et si pas la même IP.

    Si un petit malin supprime les cookies, il est encore bloqué par la dernière IP.
    La faille c'est si le visiteur change d'IP et supprime ses cookies, mais c'est quand même beaucoup mieux que sans vérification.

    Edit: oui j'ai pas fait gaffe, il faut évidement bien vérifier le contenu du _GET avant de le transmettre à la requête.
    Avec mysql_real_escape_string() http://php.net/manual/fr/function.mysql-real-escape-string.php au lieu de addslashes()
     
  9. fabrice88
    fabrice88 WRInaute occasionnel
    Inscrit:
    15 Octobre 2007
    Messages:
    317
    J'aime reçus:
    0
    quel genre de probleme peut on avoir ?
     
  10. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 057
    J'aime reçus:
    294
  11. fabrice88
    fabrice88 WRInaute occasionnel
    Inscrit:
    15 Octobre 2007
    Messages:
    317
    J'aime reçus:
    0
    ok donc si je met en tout debut de ma page :
    Code:
    $id_sujet_a_lire = mysql_real_escape_string($_GET['id_sujet_a_lire']);
    
    C'est ok ?
     
  12. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 057
    J'aime reçus:
    294
  13. fabrice88
    fabrice88 WRInaute occasionnel
    Inscrit:
    15 Octobre 2007
    Messages:
    317
    J'aime reçus:
    0
    ok merci. alors du coup dès que j'intégre des données dans ma base sql je doit mettre mysql_real_escape_string().

    Est ce que dans le cas de la requete ci dessous je doit la modifié :

    Code:
    $sql = 'INSERT INTO forum_reponses VALUES("", "'.$_POST['auteur'].'", "'.$_POST['message'].'", "'.$date.'", "'.$_GET['numero_du_sujet'].'")';
    pour (mais sa va être long si y'a beaucoup de champs a remplir...):
    Code:
    $auteur = mysql_real_escape_string($_POST['auteur']);
    $message= mysql_real_escape_string($_POST['message']);
    $date = mysql_real_escape_string($_POST['date']);
    $numero_du_sujet = mysql_real_escape_string($_GET['numero_du_sujet']);
    
    $sql = 'INSERT INTO forum_reponses VALUES("", "'.$auteur.'", "'.$message.'", "'.$date.'", "'.$numero_du_sujet.'")';
     
  14. HawkEye
    HawkEye WRInaute accro
    Inscrit:
    23 Février 2004
    Messages:
    13 932
    J'aime reçus:
    4
    NB: tu as pensé que chaque crawl de GoogleBot, Mediapartners, Slurp! et ses amis va faire une comptabilisation de plus ? :roll:
     
  15. hyadex
    hyadex WRInaute impliqué
    Inscrit:
    23 Janvier 2005
    Messages:
    577
    J'aime reçus:
    0
    Et si tu as de nombreuses pages vues par jours, ca va te faire un sacré nombre de requêtes SQL !
     
  16. fabrice88
    fabrice88 WRInaute occasionnel
    Inscrit:
    15 Octobre 2007
    Messages:
    317
    J'aime reçus:
    0
    Comprend pas...
    Ah oui ok j'ai compris. Eh bien comment faire pour ne pas les comptabiliser ?
     
  17. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    Il te faut t'ecrire une petite routine isbot.php pour les detecter et ne pas les compter ou les compter dans un compteur séparé.
     
  18. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    Une solution que j'ai testé a grande echelle : stocker les infos dans des fichiers .txt (pas de problemes d'accès concurrents donc les .txt vont tres bien et c'est autant de charge en moins pour la base mysql). En plus en optimisant bien le truc tu peux faire une routine ultra rapide qui va acéder en accès direct au 4 ou 5 octets qui te servent au comptage pour chaque page, même si tu suis 100.000 pages web ... et ca sera dans tous les cas moins gourmand que mysql à mon avis.

    Note : et si vraiment tu veux optimiser a donf, tu compte en utilisant les 8 bits et donc 2 octets suffisent par page (merci jcaron pour son aide sur les bits .... dans un autre topic).
     
Chargement...
Similar Threads - Compter nombre fois Forum Date
Compter le nombre d'occurrences d'un mot dans un site Google : l'entreprise, les sites web, les services 30 Juillet 2014
COmpter nombre de clic (vs visite) Google Analytics 9 Septembre 2013
Script pour compter et afficher le nombre de mots d'une page Développement d'un site Web ou d'une appli mobile 5 Février 2013
Compter le nombre de liens vers une même page Administration d'un site Web 17 Octobre 2011
[PHP/MySQL] Compter le nombre de checkbox cochées Développement d'un site Web ou d'une appli mobile 11 Septembre 2010
Compter le nombre de clients à l'aide de Google Analytics Google Analytics 27 Octobre 2009
mécanique - machine à compter les champignons Demandes d'avis et de conseils sur vos sites 28 Janvier 2020
RGPD et conséquences des titres émis à compter de 2020 Droit du web (juridique, fiscalité...) 8 Janvier 2020
Compter les clics sur liens sortants avec redirection Google Analytics 9 Mai 2019
Comment compter les lettres d'un texte ? Développement d'un site Web ou d'une appli mobile 27 Août 2016