Bienvenue sur le forum de la Communauté EzCom !

En ces lieux, nous vous aidons à mettre en place et à personnaliser votre forum phpBB 3.1.x, 3.2.x, 3.3.x & 4.0.x grâce à :

Une fois inscrit.e, vous pouvez :

Dernières nouvelles :

Coup d’œil : « EzCom Blog » idéal pour trouver des conseils et des services pour son forum phpBB !

Soutenir le projet de la Communauté EzCom.

Image Tu as un forum et tu veux aussi un site web ? Regarde par ici.

Welcome on the Ezcom Community board! | English visitors, may I help you? Image | Make a donation to EzCom.

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x - 3.2.1  Question traitée

Ajouter une page des statistiques du forum phpBB | How to create a statistics page for phpBB.

Assistance & documentations pour phpBB et son environnement.

Modérateurs : Graphistes, Traducteurs

Avatar de l’utilisateur
ym_trainz
EzComien
EzComien
Messages : 13
Enregistré le : lun. 9 mai 2016 18:37
Localisation : Valence

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x - 3.2.1

Messagepar ym_trainz » ven. 27 mai 2016 23:35

Bonsoir :)

Voici une page permettant d'afficher des statistiques détaillées sur votre forum phpBB :

Affiche un tableau de 6 colonnes. Pour chaque colonne, la liste des 30 utilisateurs classés selon le nombre de messages postés (du plus grand au plus petit) selon les périodes suivantes :
sur les dernières 24 heures, la semaine, le mois, le trimestre, le semestre, l'année.

Capture écran en pièce jointe.

Ce code php fonctionne avec php 5.5. (ma version de forum : phpBB 3.1.9)
Il suffit de copier le code ci-dessous, de l'enregistrer dans un fichier.php et de l'upLoader à la racine du forum.
Créer enfin un lien vers cette page.

En donnant un nom particulier à ce fichier php (par exemple : comptage.php) et en ne communiquant le lien qu'à certains responsables du site, on privilégie l'accès à ces informations à l'équipe de modération / administration.

Si cela peut vous être utile ;)
Forumement,
ym_trainz

Code : Tout sélectionner

<?php
   /* -------------------------------------------------
   code pour calcul de statistiques
   par martial B. , MAJ mai 2016 par Yves M. (ym_trainz)
   fonctionne avec php 5.5.34 / phpBB 3.1.9
   copier puis enregistrer sous [root]/statistique.php
   utilisation : à réserver à l'équipe de modération / admin
   -----------------------------------------------------
   */
   echo'<html><head>
   <style type="text/css">

.Style1 {
   color: #94BAD6;
   font-weight: bold;
   
   font-style: italic;
   font-size: 24px;
}
.Style2 {
   color: #94BAD6;
   
   font-weight: bold;
   font-style: italic;
}
body {
   font-family: Arial, "Times New Roman", Times, serif;
}
td {
    /* height: 50px; */
    vertical-align: top;
   font-size: small;
}
</style>
</head>';
if(isset($_POST['nbpost'])){
      $nbpost = $_POST['nbpost']; // nombre de meilleurs posteurs
   }
   else{
      $nbpost = 30; // nombre de meilleurs posteurs par défaut
   }
echo '<body>
<div align="center">
  <a href="index.php"><img src="styles/prosilver/theme/images/site_logo.gif"></a></br>
      <span class="Style1">Petite page de statistiques.</span>
  <p align="center" class="Style2">
  <form action="comptage.php" method="post">
   Ces statistiques sont bas&eacute;es sur les <input type="text"  style="width:40px; background-color:#DDEB93;" name="nbpost" value="'.$nbpost.'"> meilleurs posteurs.<input name="button_process" type="submit" value="Recalculer">
  </form>
  <a href="index.php">Retour page Index</a>
  </p>
</div>
';

   
// -------------------------------------------------
   
include("config.php");

// $db = mysql_connect($dbhost, $dbname, $dbpasswd);
$db = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);

// mysql_select_db($dbname,$db);
// mysqli_select_db($dbname,$db);

// nomUser : pseudo utilisateur
// nbPost : nombre de posts sur la période donnée

$jour = time() - 86400;
$semaine = time() - 604480;
$mois = time() - 2419200;
$trimestre = time() - 7257600;
$semestre = time() - 14515200;
$annee = time() - 29030400;
$sql = 'SELECT s1.nbPost, s2.nomUser FROM (SELECT poster_id AS idUser, count( * ) AS nbPost FROM phpbb3_posts WHERE phpbb3_posts.post_time >'.$jour.' GROUP BY phpbb3_posts.poster_id)s1 JOIN (SELECT user_id AS idUser, username AS nomUser FROM phpbb3_users)s2 ON s1.idUser = s2.idUser order by nbPost DESC limit '.$nbpost.'';
$req = mysqli_query($db, $sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$sql1 = 'SELECT s1.nbPost1, s2.nomUser1 FROM (SELECT poster_id AS idUser, count( * ) AS nbPost1 FROM phpbb3_posts WHERE phpbb3_posts.post_time >'.$semaine.' GROUP BY phpbb3_posts.poster_id)s1 JOIN (SELECT user_id AS idUser, username AS nomUser1 FROM phpbb3_users)s2 ON s1.idUser = s2.idUser order by nbPost1 DESC limit '.$nbpost.'';
$req1 = mysqli_query($db, $sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
$sql2 = 'SELECT s1.nbPost2, s2.nomUser2 FROM (SELECT poster_id AS idUser, count( * ) AS nbPost2 FROM phpbb3_posts WHERE phpbb3_posts.post_time >'.$mois.' GROUP BY phpbb3_posts.poster_id)s1 JOIN (SELECT user_id AS idUser, username AS nomUser2 FROM phpbb3_users)s2 ON s1.idUser = s2.idUser order by nbPost2 DESC limit '.$nbpost.'';
$req2 = mysqli_query($db, $sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
$sql3 = 'SELECT s1.nbPost3, s2.nomUser3 FROM (SELECT poster_id AS idUser, count( * ) AS nbPost3 FROM phpbb3_posts WHERE phpbb3_posts.post_time >'.$trimestre.' GROUP BY phpbb3_posts.poster_id)s1 JOIN (SELECT user_id AS idUser, username AS nomUser3 FROM phpbb3_users)s2 ON s1.idUser = s2.idUser order by nbPost3 DESC limit '.$nbpost.'';
$req3 = mysqli_query($db, $sql3) or die('Erreur SQL !<br>'.$sql3.'<br>'.mysql_error());
$sql4 = 'SELECT s1.nbPost4, s2.nomUser4 FROM (SELECT poster_id AS idUser, count( * ) AS nbPost4 FROM phpbb3_posts WHERE phpbb3_posts.post_time >'.$semestre.' GROUP BY phpbb3_posts.poster_id)s1 JOIN (SELECT user_id AS idUser, username AS nomUser4 FROM phpbb3_users)s2 ON s1.idUser = s2.idUser order by nbPost4 DESC limit '.$nbpost.'';
$req4 = mysqli_query($db, $sql4) or die('Erreur SQL !<br>'.$sql4.'<br>'.mysql_error());
$sql5 = 'SELECT s1.nbPost5, s2.nomUser5 FROM (SELECT poster_id AS idUser, count( * ) AS nbPost5 FROM phpbb3_posts WHERE phpbb3_posts.post_time >'.$annee.' GROUP BY phpbb3_posts.poster_id)s1 JOIN (SELECT user_id AS idUser, username AS nomUser5 FROM phpbb3_users)s2 ON s1.idUser = s2.idUser order by nbPost5 DESC limit '.$nbpost.'';
$req5 = mysqli_query($db, $sql5) or die('Erreur SQL !<br>'.$sql5.'<br>'.mysql_error());
echo '<table width="1020" align="center" style="vertical-align:top;">';
echo '<tr>';
echo '<td>';
$output = '<table width="160"  bgcolor="#94BAD6" border="1" align="center">';
echo '<table><p align="center" class="Style2"">H-24<br>dernieres 24h.</p></table>';
while($data = mysqli_fetch_assoc($req))
    {
    $output .= '<tr>';
     $output .= '<td>'.$j2=$data['nomUser'].'</td>';
     $output .= '<td>'.$j1=$data['nbPost'].'</td>';
     $output .= '</tr>';
    // on affiche les informations de l'enregistrement en cours
    //$j1=$data['nbPost'];
   //$j2=$data['nomUser'];
    }
   $output .= '</table>';
echo $output;
echo '</td>';
echo '<td>';
$output1 = '<table width="160"  bgcolor="#6B8AA5" border="1" align="center">';
echo '<table><p align="center" class="Style2"">J-7<br>(1 semaine)</p></table>';   
while($data1 = mysqli_fetch_assoc($req1))
    {
    $output1 .= '<tr>';
     $output1 .= '<td>'.$s2=$data1['nomUser1'].'</td>';
     $output1 .= '<td>'.$s1=$data1['nbPost1'].'</td>';
     $output1 .= '</tr>';
    // on affiche les informations de l'enregistrement en cours
    //$j1=$data['nbPost'];
   //$j2=$data['nomUser'];
    }
   $output1 .= '</table>';
   echo $output1;
echo '</td>';
echo '<td>';   
$output2 = '<table width="160"  bgcolor="#94BAD6" border="1" align="center">';   
echo '<table><p align="center" class="Style2"">J-30<br>(le dernier mois)</p></table>';
while($data2 = mysqli_fetch_assoc($req2))
    {
    $output2 .= '<tr>';
     $output2 .= '<td>'.$s2=$data2['nomUser2'].'</td>';
     $output2 .= '<td>'.$s1=$data2['nbPost2'].'</td>';
     $output2 .= '</tr>';
    // on affiche les informations de l'enregistrement en cours
    //$j1=$data['nbPost'];
   //$j2=$data['nomUser'];
    }
   $output2 .= '</table>';
echo $output2;
echo '</td>';
echo '<td>';
$output3 = '<table width="160"  bgcolor="#6B8AA5" border="1" align="center">';
echo '<table><p align="center" class="Style2"">le dernier<br>trimestre</p></table>';
while($data3 = mysqli_fetch_assoc($req3))
    {
    $output3 .= '<tr>';
     $output3 .= '<td>'.$s2=$data3['nomUser3'].'</td>';
     $output3 .= '<td>'.$s1=$data3['nbPost3'].'</td>';
     $output3 .= '</tr>';
    // on affiche les informations de l'enregistrement en cours
    //$j1=$data['nbPost'];
   //$j2=$data['nomUser'];
    }
   $output3 .= '</table>';
   echo $output3;
echo '</td>';
echo '<td>';   
$output4 = '<table width="160"  bgcolor="#94BAD6" border="1" align="center">';   
echo '<table><p align="center" class="Style2"">Le dernier<br>semestre</p></table>';
while($data4 = mysqli_fetch_assoc($req4))
    {
    $output4 .= '<tr>';
     $output4 .= '<td>'.$s2=$data4['nomUser4'].'</td>';
     $output4 .= '<td>'.$s1=$data4['nbPost4'].'</td>';
     $output4 .= '</tr>';
    // on affiche les informations de l'enregistrement en cours
    //$j1=$data['nbPost'];
   //$j2=$data['nomUser'];
    }
   $output4 .= '</table>';
   echo $output4;
echo '</td>';
echo '<td>';   
$output5 = '<table width="160" bgcolor="#6B8AA5" border="1" align="center">';   
echo '<table><p align="center" class="Style2"">J-360<br>(une année)</p></table>';   
while($data5 = mysqli_fetch_assoc($req5))
    {
    $output5 .= '<tr>';
     $output5 .= '<td>'.$s2=$data5['nomUser5'].'</td>';
     $output5 .= '<td>'.$s1=$data5['nbPost5'].'</td>';
     $output5 .= '</tr>';
    // on affiche les informations de l'enregistrement en cours
    //$j1=$data['nbPost'];
   //$j2=$data['nomUser'];
    }
   $output5 .= '</table>';
   echo $output5;
echo '</td>';
echo '</tr>';
echo '<table>';
// on ferme la connexion à mysql
mysqli_close($db);
echo '</body></html>';
?>


[EDIT Raphaël]Ajout d’une icône de sujet et harmonisation du titre du sujet.
Fichiers joints
cap_statistique.gif
Modifié en dernier par ym_trainz le ven. 5 janv. 2018 20:33, modifié 4 fois.


Contenu publicitaire :

Avatar de l’utilisateur
Raphaël
Chef de projets
Chef de projets
Messages : 3080
Enregistré le : ven. 24 oct. 2014 18:02
Localisation : Marseille

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar Raphaël » sam. 28 mai 2016 00:15

C’est un bon début merci.

Cela étant dit, je pense qu’il est nécessaire d’expliquer davantage :
  • la liste exhaustive des informations que cette page indique ;
  • la signification dans le code de nomUser et nbPost et leurs dérivés numériques (01, 02…) ;
  • si la page est par défaut protégée de tous les autres utilisateurs n’ayant pas le statut de modérateur ou administrateur.

Bonne continuation !

Image Tu as un forum et tu veux aussi un site web ? Regarde par ici.

🔍 Recherches :
Questions : ✚ Extensions présentées 🎨 Styles présentés ★ Toutes autres questions

📖 Documentations :
✍ Traductions : Demander Proposer

Avatar de l’utilisateur
ym_trainz
EzComien
EzComien
Messages : 13
Enregistré le : lun. 9 mai 2016 18:37
Localisation : Valence

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x  Question traitée

Messagepar ym_trainz » dim. 29 mai 2016 10:53

Ajout de quelques précisions supplémentaires sur le premier post ainsi qu'une capture d'écran. :)


Avatar de l’utilisateur
Raphaël
Chef de projets
Chef de projets
Messages : 3080
Enregistré le : ven. 24 oct. 2014 18:02
Localisation : Marseille

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar Raphaël » lun. 30 mai 2016 01:22

Merci c'est mieux mais cela manque de sécurité.

Image Tu as un forum et tu veux aussi un site web ? Regarde par ici.

🔍 Recherches :
Questions : ✚ Extensions présentées 🎨 Styles présentés ★ Toutes autres questions

📖 Documentations :
✍ Traductions : Demander Proposer

Avatar de l’utilisateur
Laptop-Gaming
Invité
Invité

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar Laptop-Gaming » ven. 15 juil. 2016 22:52



Avatar de l’utilisateur
Raphaël
Chef de projets
Chef de projets
Messages : 3080
Enregistré le : ven. 24 oct. 2014 18:02
Localisation : Marseille

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar Raphaël » sam. 16 juil. 2016 04:24

Salut Laptop-Gaming,

peut-être que dans ta base de données tes tables n'ont pas comme préfixe : phpbb3_ mais autre chose. Si c’est le cas, il te faudra remplacer toute allusion à : phpbb3_ contenu dans le code indiqué dans le premier message de ce sujet, par le nom du préfixe de tes tables.

Image Tu as un forum et tu veux aussi un site web ? Regarde par ici.

🔍 Recherches :
Questions : ✚ Extensions présentées 🎨 Styles présentés ★ Toutes autres questions

📖 Documentations :
✍ Traductions : Demander Proposer

Avatar de l’utilisateur
Laptop-Gaming
Invité
Invité

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar Laptop-Gaming » dim. 17 juil. 2016 10:43

Salut Raphael

Alors la je connais rien dans les base de données

Si tu peux m'aider a ce sujet


Avatar de l’utilisateur
Raphaël
Chef de projets
Chef de projets
Messages : 3080
Enregistré le : ven. 24 oct. 2014 18:02
Localisation : Marseille

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar Raphaël » dim. 20 nov. 2016 12:49

Salut Laptop-Gaming,

dans phpMyAdmin tu as le début de chaque ligne indiquant le nom de tes tables de ta base de données qui commence par quelquechose (si tu ne les a pas changées durant l'installation de ton forum) : phpbb3_. Auquel cas, si c"est différent il faut modifier toute allusion à phpbb3_ dans le fichier à créer indiqué dans le premier message de ce sujet.

@ym_trainz, tu n’as pas répondu à l’interrogation sur la sécurté de ce script, vérifie t-il l’identité du visiteur qui la consulte. Auquel cas contraire c’est un manquement à la sécurité. Tout au moins, je conseille de placer ce fichier dans un sous-répertoire, tel que : ./stats/ avec un jeu de fichiers .htaccess et .htpasswd dedans.

Image Tu as un forum et tu veux aussi un site web ? Regarde par ici.

🔍 Recherches :
Questions : ✚ Extensions présentées 🎨 Styles présentés ★ Toutes autres questions

📖 Documentations :
✍ Traductions : Demander Proposer

Avatar de l’utilisateur
ym_trainz
EzComien
EzComien
Messages : 13
Enregistré le : lun. 9 mai 2016 18:37
Localisation : Valence

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar ym_trainz » dim. 20 nov. 2016 21:22

Bonsoir,

En effet, pour plus de sécurité, ce code peut être placé dans un répertoire protégé par .htaccess . Pour notre site, il porte un nom exotique que seuls les modos et admins connaissent. Nous n'avons jamais de souci. De plus, ce code ne fait que de la lecture.

ym_trainz


Avatar de l’utilisateur
Raphaël
Chef de projets
Chef de projets
Messages : 3080
Enregistré le : ven. 24 oct. 2014 18:02
Localisation : Marseille

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar Raphaël » dim. 20 nov. 2016 21:57

N’étant pas codeur je ne vais pas prendre ce risque. Les robots sont aujourd’hui capables de trouver les pages alors même qu’elles ont un nom exotique.

Image Tu as un forum et tu veux aussi un site web ? Regarde par ici.

🔍 Recherches :
Questions : ✚ Extensions présentées 🎨 Styles présentés ★ Toutes autres questions

📖 Documentations :
✍ Traductions : Demander Proposer

Avatar de l’utilisateur
ym_trainz
EzComien
EzComien
Messages : 13
Enregistré le : lun. 9 mai 2016 18:37
Localisation : Valence

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar ym_trainz » dim. 20 nov. 2016 23:16

Certes ;-)
Merci pour ces précisions ^_^


Avatar de l’utilisateur
pboulanger
Traducteur
Traducteur
Messages : 33
Enregistré le : sam. 20 juin 2015 11:21
Localisation : OISE

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar pboulanger » sam. 26 nov. 2016 10:33

:) Bonjour,

Idée sympa mais j'ai un souci avec le bouton RECALCULER : :223:

Il fait appel à un fichier comptage.php qui n'existe pas (voici le message d'erreur "No route found for "POST /comptage.php")

Je teste ton script sur la partie admin de notre site ....

Merci pour l'initiative c'est cool

Bonne journée

Amicalement,

Pierre

Avatar de l’utilisateur
ym_trainz
EzComien
EzComien
Messages : 13
Enregistré le : lun. 9 mai 2016 18:37
Localisation : Valence

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar ym_trainz » sam. 26 nov. 2016 10:46

Bonjour Pbloulanger,

Change comptage.php par le nom de cette page statistique php. Ce bouton rafraîchit la page.
;-)


Avatar de l’utilisateur
Raphaël
Chef de projets
Chef de projets
Messages : 3080
Enregistré le : ven. 24 oct. 2014 18:02
Localisation : Marseille

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar Raphaël » mar. 29 nov. 2016 14:48

Salut,

ce serait peut-être utile de préciser quel nom doit porter ce fichier, ou indiquer où changer le nom de l'appel au fichier, histoire de ne pas reproduire ce genre de question. ;)

Image Tu as un forum et tu veux aussi un site web ? Regarde par ici.

🔍 Recherches :
Questions : ✚ Extensions présentées 🎨 Styles présentés ★ Toutes autres questions

📖 Documentations :
✍ Traductions : Demander Proposer

Avatar de l’utilisateur
ym_trainz
EzComien
EzComien
Messages : 13
Enregistré le : lun. 9 mai 2016 18:37
Localisation : Valence

MISE EN PLACE : Page privée de statistiques du forum phpBB 3.1.x

Messagepar ym_trainz » mer. 30 nov. 2016 17:43

Bonsoir,

Pour faire suite à la remarque de Raphaël que je remercie au passage,
Le bouton "recalculer" est un membre de la form qui, avec la méthode post, rafraîchit la page.
Si vous avez enregistré cette page sous le nom "comptage.php",

Alors, le code de la form est :
<form action="comptage.php" method="post">
;-)

ym_trainz


Contenu publicitaire :


Retourner vers « Support pour phpBB »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité