Comment récupérer le nombre de vue d'un article ?

Skill_DuTigre

Skill_DuTigre Le 20 août 2016 à 15:22 (Édité le 25 janvier 2019 à 17:52)

Hello, comme dit dans le titre je souhaite récupérer le nombre de vue de mes articles, j'ai trouver un sujet qui parle de la même chose : Compter nombre de vue.
Mais je ne comprends pas comment cela fonctionne... Et quand je test le code j'ai l'erreur suivante :

"Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id_article' cannot be null in C:\Program Files (x86)\Ampps\www\ana\article.php:70 Stack trace: #0 C:\Program Files (x86)\Ampps\www\ana\article.php(70): PDOStatement->execute(Array) #1 {main} thrown in C:\Program Files (x86)\Ampps\www\ana\article.php on line 70".

Une idée ? 😀
TheFlameflo

TheFlameflo Le 20 août 2016 à 16:30

Salut !

Pourrais-tu nous donner un petit bout de code, autour de la ligne 70 comme il est écrit dans ton erreur
Sinon, on peut voir qu'on parle de la colonne id_article qui ne peut pas être null. Essaye de voir si il y a quelque chose avec ca, tu as peut-être oublié l'auto-increment. 😉

J’espère t’avoir aidé ! 😄
Skill_DuTigre

Skill_DuTigre Le 20 août 2016 à 18:41

Hello !
   } else {
     $addview = $bdd->prepare('INSERT INTO vues(ip,id_article,unix_time) VALUES (?,?,?)');
     $addview->execute(array($userip,$id_article,$unixactual));
   }
Ligne 70 : 
$addview->execute(array($userip,$id_article,$unixactual));
Je ne pense pas pour l'auto-increment parce que j'ai respecter le schéma de la table présente en commentaire. 😀
TheFlameflo

TheFlameflo Le 20 août 2016 à 19:47

Salut !

Désolé pour l'auto-increment, je n'avais pas pris le temps d'aller voir dans le lien que tu as fourni.

Sur le code de PrimFX, on ne définit pas la variable $id_article, donc, tu dois la définir afin de la rentrer dans la bdd.

Comme on peut voir avec l'erreur que tu as fourni, on dit que la colonne id_article ne peut pas être vide.
Donc, si tu ne définis pas la variable $id_article à autre chose que null. PDO te renverras une erreur, car tu ne fournis pas le paramètre.
Il suffit donc de définir $id_article ! 😄

J'espère t'avoir aidé !
MisterCode

MisterCode Le 20 août 2016 à 20:00

Hey, 

Donc il faut lui dire que "id_article" de la table "vues" est égale a "id" de la table "articles" ? 
Si oui comment faire ça ? Et si non, comment la définir ? 😋

Merci 😀
Balatharas

Balatharas Le 20 août 2016 à 21:03 (Édité le 20 août 2016 à 21:06)

Hello je viens vous proposer quelque chose mais je n'ai rien testé n'étant pas cher moi (enfin j'utilise ce code, mais pas pour le même but). Alors cette solution est toute simple:
<?php session_start(); ?><?phpif(file_exists('compteur_visites.txt')){
        $compteur_f = fopen('compteur_visites.txt', 'r+');        $compte = fgets($compteur_f);}
else{
        $compteur_f = fopen('compteur_visites.txt', 'a+');        $compte = 0;}
if(!isset($_SESSION['compteur_de_visite'])){
        $_SESSION['compteur_de_visite'] = 'visite';        $compte++;        fseek($compteur_f, 0);        fputs($compteur_f, $compte);}
fclose($compteur_f);echo '<strong>'.$compte.'</strong> visites.';?>
Code par @Ades03
Alors en gros ce code va créer un fichier texte dans le même dossier que le fichier qui contient le code, dès que la page va être visitée.
Par contre il faudra l'adapter si le compte doit être fait dans une autre page.

Je te laisse faire 😉
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte