Voici un code php permettant d'afficher un top 10 des actifs des membres de mon forum par ordre décroissant proportionnellement a leur inscription (taux en msg/jour)
Juste un souci, la syntaxe pour déclaré "au moment ou on lit la stat" n'est pas précise puisque c'est "aujourd'hui" tout court c'est a dire aujourd'hui a minuit donc cela faut les résultat puisque (je prend un exemple simple pour que vous puissiez comprendre) :
Un membre qui s'inscrit le 15/01/2009 a 22H et a 2 messages
Si on regard les statistiques le 16/01/2009 a 22H logiquement il devrai être a 2 msg/j de moyenne or il indiquera 24 msg/jour de moyenne du fait que la statistique considère que la date au moment ou on lira la stat n'est pas le 16/01/2009 a 22h mais le 16/01/2009 a minuit (le matin)
Donc cela change tout puisque entre 22h et minuit ça fait un écart de 2h donc 1 msg par heure en moyenne soit 24 msg par jour de moyenne alors qu'en réalité quand on regarde la stat c'est 2 msg/jour de moyenne.
Autre souci a cause de la déclaration de "maintenant" : si un membre s'inscrit après minuit, il est a 0 msg/heure si on regarde la stat le même jour et cela quelque soit le nombre de message qu'il postera (normale puisque ça s'arrète minuit)
Malgré avoir essayé pleins de choses y compris en regardant cet aide : http://www.toutestfacile.[...].com-functdate.php5
impossible d'arriver a déclarer l'instant présent.
Voici le code de la mod':
Code :
- <?php
- //Choix de la période (jour, semaine, mois)
- $periode = "jour";
- switch($periode) {
- case "jour" :
- $interval = 86400;
- break;
- case "semaine" :
- $interval = 86400 * 7;
- break;
- case "mois" :
- $interval = 86400 * 30;
- break;
- default :
- $interval = 86400;
- $periode = "jour";
- }
- $sql = "SELECT u.id,u.username,
- ROUND((u.num_posts/((Unix_Timestamp(CURRENT_DATE()
- ) - u.registered)/".$interval." )),6) AS Moyenne FROM ".$db->prefix."users AS u ORDER BY Moyenne DESC LIMIT 10";
- $result = $db->query($sql)or error ('Erreur récupération Moyenne des posts', __FILE__, __LINE__, $db->error());
- echo "<p><strong>Top 10 posteurs</strong><small><i> (Moyenne par ".$periode." )</i></small> : ";
- while($top10_membre = $db->fetch_assoc($result)) echo '<a href="profile.php?id='. $top10_membre['id'] .'">'. $top10_membre['username'] .'</a> (<i>'. $top10_membre['Moyenne'] .'</i> ), ';
- ?>
|
Par quoi dois je remplaçer ((Unix_Timestamp(CURRENT_DATE()
) svp ?
Message édité par simsidius le 19-01-2009 à 16:20:32
---------------
Webmasteur & administrateur du nouveau site d'info : informatique-fr.org