Bonjour,
Sur un site ( architecture MVC) dont je m'occupe je voudrai mettre le nombre de fois qu'un article a été lu. J'ai donc créé dans ma base de donnée une colonne "vu". En regardant sur le site d'Alsacecréation j'ai constaté que ce sujet avait été traité et je me suis donc permis de reprendre les indications données pour tenter de mettre en place ce fameux compteur d'article lu. J'ai donc fait comme suit dans la partie du code concerné (MODELE) :

<?php
function get_pdo_instance()
{
   $bdd = null;
   try
   {
      $bdd= new PDO('mysql:host=localhost;dbname=BDD','xxxx','PW');$bdd->exec('SET NAMES utf8');
   }
   catch(Exception $e)
   {
      die('Erreur : '.$e->getMessage());
   }
   return $bdd;
}

function recuperer_billet($id)
{
   $bdd = get_pdo_instance();
   $response = $bdd->prepare('SELECT id_billet, titre1,  contenu1,  DATE_FORMAT(date_de_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_de_creation_fr, vu FROM billets WHERE id_billet = :id_billet');
while($vu = mysql_fetch_row($sql))
{
$nouvelvue=$vu[0]+1;
mysql_query('UPDATE billets SET vu ='.$nouvelvue.' WHERE id_billet=:id_billet');
}
   $response->bindValue(':id_billet', $id, PDO::PARAM_INT);
   $response->execute();
   return $response->fetch();
} 


Toutefois quand je clique sur l'article pour voir ce qu'il en est la page (VU) s'affiche mais le message suivant apparaît :

Warning: mysql_fetch_row() expects parameter 1 to be resource, null given in /home/clients/koafe.info/http/modele/commentaire/get_billets.php on line 69


ligne 69 correspond à while($vu = mysql_fetch_row($sql))

et le nombre 0 apparaît là ou j'ai mis echo dans ma page VU.

Où ai-je commis l'erreur.

Merci pour votre aide.

Cordialement.
Modérateur
Bonjour,

tu confonds PDO et mysql.

Tu commences par utiliser PDO, puis tu utilises des fonctions mysql sur des variables qui n'existent pas?


   $bdd = get_pdo_instance();
   $response = $bdd->prepare('SELECT id_billet, titre1,  contenu1,  DATE_FORMAT(date_de_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_de_creation_fr, vu FROM billets WHERE id_billet = :id_billet');
   $response->execute([':id_billet' => $id]);
   $billet = $response->fetch(PDO::FETCH_OBJ);
   $billet->vu += 1;
   $bdd->prepare('UPDATE billets SET vu =:vu WHERE id_billet=:id_billet')
      ->execute([':vu' => $billet->vu+1, ':id_billet' => $id]);
Bjr kustolovic,

En remplaçant mon code par

$response->execute([':id_billet' => $id]);
   $billet = $response->fetch(PDO::FETCH_OBJ);
   $billet->vu += 1;
   $bdd->prepare('UPDATE billets SET vu =:vu WHERE id_billet=:id_billet')
      ->execute([':vu' => $billet->vu+1, ':id_billet' => $id]);


Ma page vu apparaît mais sans les articles.

Merci pour ton aide.