Bonjour

Je suis en train de coder un petit forum pour un ami en php.
Il m'a demandé un petit compteur des topics sur lesquels il y a eu des réponses depuis la dernière visite d'un membre. Pour se faire, je me suis inspité d'un tuto trouvé sur le net qui montrait une façon de procéder. Après quelques tests, j'ai un code fonctionnel.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$query=$bdd->prepare('
SELECT forum_topic.topic_last_post, Mb.membre_pseudo AS post_createur, tv_id, tv_post_id, tv_poste, Ma.membre_pseudo FROM forum_topic
LEFT JOIN general_membres Mb ON Mb.membre_id = forum_topic.topic_createur
LEFT JOIN forum_post ON forum_topic.topic_last_post = forum_post.post_id
LEFT JOIN general_membres Ma ON Ma.membre_id = forum_post.post_createur
LEFT JOIN forum_topic_view ON forum_topic.topic_id = forum_topic_view.tv_topic_id AND forum_topic_view.tv_id = :id
');
$query->bindValue(':id',$_SESSION['id'],PDO::PARAM_INT);
$query->execute();
 
$nbrposts = 0;
 
while ($data = $query->fetch()) {
  if ($data['tv_id'] == $_SESSION['id']) {
    if ($data['tv_poste'] == '0') {
      if ($data['tv_post_id'] != $data['topic_last_post']) {
        $nbrposts++;
      }
    }
    else {
      if ($data['tv_post_id'] != $data['topic_last_post']) {
        $nbrposts++;
      }
    }
  }
  else {
    $nbrposts++;
  }
}
 
$query->CloseCursor();
echo $nbrposts;
?>
Ma question est la suivante, le while n'est-il pas plus lourd qu'un SELECT COUNT ? Sachant que ce compteur sera rappelé via AJAX toutes les X secondes. Et dans le cas où ce serait préférable de n'utiliser qu'un SELECT COUNT, quelqu'un pourrait-il m'aiguiller, parce que je ne suis pas le meilleur en syntaxe SQL. Je me doute qu'il faut utiliser des WHERE mais à chaque tentative, j'échoue :/

Merci bien