[RESOLU] Variable statique pour compter le nbre de commentaires

Petit nouveau ! | 2 Messages

21 mai 2014, 12:55

Bonjour à tous.

J'essaye actuellement d'afficher la valeur d'une variable stockant le nombre de commentaires dans ma page.

Voici, en gros, la structure de ma page :
<html>
   <body>
      <div id="infos">0 commentaires</div>
      <div id="contenu"> ... </div>
      <div id="commentaires"><?php include("commentaires.php"); ?></div> ==> Traitements sur les commentaires
   </body>    
</html>    
J'aimerais donc afficher dynamiquement le nombre de commentaires dans ma div "infos" en fonction du nombre de commentaires.
Le fichier commentaires.php s'occupe de garder les commentaires dans un tableau et de les afficher. J'ai réussi à compter le nombre de commentaires dans un $nb pour l'afficher :
<html>
   <body>
      <div id="infos">0 commentaires</div>
      <div id="contenu"> ... </div>
      <div id="commentaires"><?php include("commentaires.php"); ?></div> ==> Traitements sur les commentaires

      <?php echo $nb; ?>  ===> OK pour le nombre de commentaires, il est correct et se met à jour dynamiquement

   </body>    
</html>    
Mon problème est l'affichage de ce $nb dans ma div "infos", située AVANT les traitements sur les commentaires. J'ai donc pensé à mettre $nb en static :
<html>
   <body>

      <?php static $nb; ?>

      <div id="infos"><?php echo $nb; ?> commentaires</div> ==> Premier affichage de $nb 
      <div id="contenu"> ... </div>
      <div id="commentaires"><?php include("commentaires.php"); ?></div> ==> Traitements sur les commentaires

      <?php echo $nb; ?>  ===> OK pour le nombre de commentaires, il est correct et se met à jour dynamiquement

   </body>    
</html>    
J'aimerais qu'au premier affichage de $nb, les traitements effectués plus tard (soit le compte des commentaires) sois déjà pris en compte afin d'afficher dynamiquement le nombre de commentaires. Est-ce possible sans base de données? Je pense qu'il faut utiliser une variable statique mais je ne suis pas sûr de l'avoir bien fait.

Merci pour votre aide.

Eléphant du PHP | 422 Messages

21 mai 2014, 13:28

hello

PHP va exécuter le code de manière temporelle. Il ne peux pas deviner avant que le code ne soit exécuté. et une fois exécuté il ne revient pas en arrière :)

pour résoudre ton problème il faut que tu exécute ton include avant !!

tu peux test un truc du genre.
<?php

ob_start();
include('commentaires.php');
$file_content = ob_get_contents();
ob_end_clean ();

?>

<html>
   <body>
      <div id="infos"><?php echo $nb; ?> commentaires</div>
      <div id="contenu"> ... </div>
      <div id="commentaires"><?php echo $file_content; ?></div> ==> Traitements sur les commentaires
   </body>    
</html>  

sinon php peux écrire du JS qui ira écrire une var dans la page.

ps: sinon c'est pas super catholique comme façon de coder ... mieux vaut exécuter le code avant et faire l'affichage par la suite.
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Petit nouveau ! | 2 Messages

21 mai 2014, 13:49

Tu as raison. Il suffisait simplement de séparer les traitements de l'affichage, et de faire les traitements en tout premier. Logique. Je m'en souviendrai pour la prochaine fois, grâce à toi.

Merci de m'avoir aidé si rapidement ! Le problème est RESOLU