Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
Auteur : Xonzai
Cette modification mineure vous permet d'afficher sur votre index, le top 10 des posteurs de votre forum.
Les instructions d'installation sont disponibles en anglais et français.
Hors ligne
Merci;
Y'aurai t'il moyen d'avoir la meme chose mais cette fois ci avec les membres qui ont le plus de messages par jour de moyenne ?
Il suffirai de faire au script une division : nbr de message divisé par nbr de jour depuis lequel il est enregistré et ça donne la valeur moyenne en msg/j et classé par ordre décroissant d'après ces valeurs, est ce que quelqu'un pourrai faire ça ?
Hors ligne
Oui c'est très simplement faisable 
Je peux adapter le script sans problèmes.
Ps : sur le même modèle de présentation ?
Dernière modification par Xonzai (17-12-2007 18:47:07)
Hors ligne
Ouais tu peux utiliser le mème modèle de présentation c parfait comme t'a fait pour le top10 ! c juste que ça serai mieux de voir proportionnellement a leur inscription les plus actifs parcequ'un membre inscrit depuis 2 semaine et qui a posté 200 messages et plus actif qu'un membre inscrit depuis 1 ans et qui a posté 500 messages !
qd t'aura fait les modifs du script, met un lien ici stp.
merci d'avançe pour ton boulot !
ps : tu pourrai m'ajouter ds tes contacts msn stp ? ( feisty@live.fr )
Dernière modification par Lost (17-12-2007 18:54:40)
Hors ligne
Arghh, désolé, j'ai un contre temps, je ferais le script à mon retour.
ps: désolé, je n'accepte pas les gens sur msn, sinon ça part toujours en sucette sur msn avec les demandes de coding. 
Hors ligne
Ok pas grave, je repasserai demain
sinon petit détail, ça serai bien si tu pouvai mettre "1er" "2eme" "3eme" et préciser que c des msg/j et non mettre juste la valeur si possible.
Exemple :
Top10 des + actifs : 1er > DrNo (31.567 msg/j) 2e > Supertrack (30.641 msg/j) 3e> Superpopol (27.564 msg/j)...
Dernière modification par Lost (17-12-2007 19:18:18)
Hors ligne
Xonzai t'ai arrivé a faire la meme chose avec le nbr de msg/j ?
Hors ligne
Je serais également intéressé par un classement en msg/j. Quelqu'un a-t'il déjà travaillé sur ce script ?
Hors ligne
bonjour,
quelqu'un a-t'il du nouveau pour la stat nb msg / jours ?
Merci
Hors ligne
Elle est compatible avec 1.2.17 fr punbb
Hors ligne
bonjour a tous
merci pour ce mod comment faire pour l inserer en bas du forum
Hors ligne
bonjour,
quelqu'un a-t'il du nouveau pour la stat nb msg / jours ?
Merci
UP
Forum : http://actuboard.com
Forum de test : http://test.actuboard.com
"Merci d'aller sur le forum de test pour vérifier une "mod""
Hors ligne
Rechercher dans index.php :
$result = $db->query('SELECT id, username, num_posts FROM '. $db->prefix .'users ORDER BY num_posts DESC LIMIT 10', true)or error('Database error', __FILE__, __LINE__, $db->error());Dans la ligne, remplacer :
BY num_postsPar
BY (num_posts/(('.time().'-registered)/(3600*24)))Non testé et c'est pas si simple donc si erreur, activer le mod débug et donner l'erreur.
EDIT : Petite correction.
Dernière modification par M@x (18-01-2009 15:19:53)
...
Hors ligne
Le problème c'est qu'a l'affichage ça classe les membres en indiquant le nombre de message en tout alors qu'il faudrai que ça affiche leur moyenne en msg/jour
a cause de cette ligne :
echo '<a href="profile.php?id='. $top10_membre['id'] .'">'. $top20_membre['username'] .'</a> (<i>'. $top10_membre['num_posts'] .'</i>), ';Tu saurai comment afficher la moyenne msg/jour a coté au lieu du nombre de poste en tout ? (en prenant 2 chiffres après la virgule maxi) ex : 17.54 m/j
Par exemple affiché :
Top 10 posteurs : Jackie045 (21.59 m/j), Pierre899 (18.10 m/j), girar (16.99 m/j)...
Dernière modification par actuboard (18-01-2009 16:27:57)
Forum : http://actuboard.com
Forum de test : http://test.actuboard.com
"Merci d'aller sur le forum de test pour vérifier une "mod""
Hors ligne
Et le classement, c'est bon ? Parce qu'a l'origine c'est l'unique demande.
<?php
$result = $db->query('SELECT id, username, num_posts, registered FROM '. $db->prefix .'users ORDER BY (num_posts/(('.time().'-registered)/(3600*24))) DESC LIMIT 10', true)or error('Database error', __FILE__, __LINE__, $db->error());
while($top10_membre = $db->fetch_assoc($result))
{
$messages_jours = round($top10_membre['num_posts']/(('.time().'-$top10_membre['registered'])/(3600*24))), 2);
echo '<a href="profile.php?id='. $top10_membre['id'] .'">'. $top10_membre['username'] .'</a> (<i>'. $messages_jours .'</i>), ';
}
?>Ptètes des erreurs. Pas testé.
Dernière modification par M@x (18-01-2009 16:38:03)
...
Hors ligne
Le classement était bon oui par contre là ça marche pas ça affiche la page blanche :
Y'a du avoir un syntaxe qui pose problème dans ce que tu m'a donné.
Forum : http://actuboard.com
Forum de test : http://test.actuboard.com
"Merci d'aller sur le forum de test pour vérifier une "mod""
Hors ligne
J'ai pas de page blanche mais un soucis de calcul.
...
Hors ligne
Si il y a bien une page blanche, elle disparait parfois parceque j'ai essayé la proposition d'un autre et son comptage n'est pas bon sans parler qu'il n'y a pas d'arrondis mais le tiens de code si je le met ça met page blanche.
voila ce qu'il m'a proposé :
?>
<!-- BEGIN MOD TOP 10 -->
<div id="top10" class="block">
<div class="box">
<div class="inbox">
<p><strong>Top 10 posteurs par jour</strong>
<?php
$result = $db->query('SELECT id, username, num_posts, registered FROM '. $db->prefix .'users ORDER BY (CURRENT_TIMESTAMP() - registered) / num_posts DESC LIMIT 10', true)or error('Database error', __FILE__, __LINE__, $db->error());
while($top10_membre = $db->fetch_assoc($result))
{
$memberdays = max(1, round((time() - $top10_membre['registered']) / 86400));
$top10_membre['num_posts'] /= $memberdays;
echo '<a href="profile.php?id='. $top10_membre['id'] .'">'. $top10_membre['username'] .'</a> (<i>'. $top10_membre['num_posts'] .'</i>), ';
}
?>
</p>
</div>
</div>
</div>
<!-- END MOD TOP 10 -->
<?phpDernière modification par actuboard (18-01-2009 17:03:40)
Forum : http://actuboard.com
Forum de test : http://test.actuboard.com
"Merci d'aller sur le forum de test pour vérifier une "mod""
Hors ligne
Alors M@x t'a une idée du souci dans ton code ?
Ton code installé donne cela : http://test.actuboard.com/index2.php
(index.php étant la modif de l'autre)
Forum : http://actuboard.com
Forum de test : http://test.actuboard.com
"Merci d'aller sur le forum de test pour vérifier une "mod""
Hors ligne
Bonjour,
Voilà la requête MySQL qui donne :
- Le Pseudo des dix posteurs (Posteur)
- Le nombre total de posts (Nombre_Post_Total)
- La date d'inscription (Date_Inscription) en texte sous la forme 12 Décembre 2007
- Le nombre de post par jour depuis l'inscription (Nombre_Jour)
Si on veut le nombre de posts par semaine au lieu de par jour, remplacer 86400 par 604800
SELECT u.username AS Posteur,
u.num_posts AS Nombre_Post_Total,
DATE_FORMAT(From_UnixTime(u.registered), CONCAT('%d ', ELT( MONTH(From_UnixTime(u.registered)),'Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'),' %Y')) AS Date_Inscription,
(u.num_posts/((Unix_Timestamp(Curdate()) - u.registered)/86400)) AS Nombre_Jour
FROM punbb_users AS u
ORDER BY Nombre_Jour DESC LIMIT 10;Il ne reste plus qu'a récupérer le résultat de la requête.
Nota : Testé et vérifié en local sous Windows XP Home SP3 avec PhpMyAdmin, Apache 2.2.11, PHP 5.2.8, MySQL 5.1.30 et PhpMyAdmin 3.1.1
Dernière modification par Otomatic (18-01-2009 19:33:21)
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Je sais pas du tout ou placer ce que tu as mit Otomatic et comment récupéré les résultats, moi je veux juste :
afficher le top 10 des membres classé de celui le plus actif au moins actif par rapport a leur nombre de msg/jour de moyenne en précisant cette moyenne en allant 2 chiffres après la virgule.
Voici mon index.php avec le top10 normale (sans aucune modif pour la moyenne msg/jour. Otomatic pourrai tu stp me recopier mon code mais avec ta modif stp pour que ça affiche correctement.
Mon fichier index.php avec le topi10 normale :
Code trop long supprimé
PS : l'idéal serai de pouvoir faire ce que je demande en le moins de requête possible.
Dernière modification par actuboard (19-01-2009 11:55:04)
Forum : http://actuboard.com
Forum de test : http://test.actuboard.com
"Merci d'aller sur le forum de test pour vérifier une "mod""
Hors ligne
Bonjour,
Voilà un « truc » qui fonctionne parfaitement et qui, de plus, peut être paramétré en jour, semaine ou mois.
<!-- BEGIN MOD TOP 10 -->
<div id="top10" class="block">
<div class="box">
<div class="inbox">
<?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(Curdate()) - u.registered)/".$interval.")),2) 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>), ';
?>
</p>
</div>
</div>
</div>
<!-- END MOD TOP 10 -->Il serait quand même bien que tu te penches un peu sur le codage PHP et MySQL au lieu d'attendre que ça te tombe tout rôtit dans le bec.
Un bon début :
http://www.siteduzero.com/tutoriel-3-14 … c-php.html
Toutes les explications « officielles » PHP, en français :
http://www.php.net/manual/fr/
D'autre part - point de vue philosophique - afficher les dix « posteurs » les plus prolifiques, c'est privilégier la quantité au détriment de la qualité.:rolleyes:
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Bon travail malheureusement ton code ne marche pas pour les nouveaux membres.
En effet j'ai installé ton code, donc apparemment pour les membres déja existant ça pose pas de souci mais ensuite j'ai créer un compte et j'ai posté 1 message avec et dans le top10 c'est affiché "0.00"
voir forum de test : http://test.actuboard.com
(compte crée : boudy)
edit : je viens de recréer un compte, de poster, de modifier la date d'inscription par une plus ancienne et ça a prit en compte la moyenne donc ça doit venir d'un problème de date.
Dernière modification par actuboard (19-01-2009 14:39:12)
Forum : http://actuboard.com
Forum de test : http://test.actuboard.com
"Merci d'aller sur le forum de test pour vérifier une "mod""
Hors ligne