Merci de vos réponse,
Je mets à disposition un bout de script qui génère un histogramme en fonction
- du mombre de connexion réussi
- de l'histogramme en %
- de son nom (lastname)
il récupère tout le monde qui se sont connecté au moins une fois
<?php
header("Content-type: image/png");
$stat = new Stat();
$total = $stat->statTotalMouvActivite();
$stat->proportion($total);
$stat->statTotalMouvActivite();
$stat->statActivite();
$resultat = $stat->getResultatP100();
$im = imagecreatetruecolor(1000, 2000);
$white = imagecolorallocate($im, 255, 255, 255);
$red = imagecolorallocate($im, 255, 0, 0);
$bleu = imagecolorallocate($im, 51, 100, 255);
imagestring($im, 30, 30, 30, $total, $white);
$depart_x = 0;
$depart_y = 50;
$fin_x = 1000;
$nb_bar = 10;
$decade_y = 40;
$point_y = 0;
foreach ($resultat as $R) {
$chiffre = round($R['chiffre'],2,PHP_ROUND_HALF_UP);
//echo $R['nom'];
imagefilledrectangle($im, 0, $point_y, $chiffre*100, $point_y + 25, $red);
imagestring($im, 7, 15, $point_y ,$chiffre.'%', $white);
imagestring($im, 10, $chiffre*100 + 20, $point_y, $R['nom'].' viste =>'.$R['brut'].' : loggin', $bleu);
$point_y = $point_y + $decade_y;
}
imagepng($im);
imagedestroy($im);
class Stat {
private $resultat_total;
private $reference = NULL;
private $somme = 0;
private $resultat_pour100 = array();
private $bdd;
public function __construct() {
$this->bdd = new PDO('mysql:host=localhost;dbname=moodle', 'root', 'pas');
}
public function proportion($resulat) {
return ($resulat * 100) / $this->reference;
}
public function rectificatif($diviseur) {
$this->reference = $this->reference / $diviseur;
}
public function statTotalMouvActivite() {//nombre total de ressource vu ou ajouter
$query = "SELECT COUNT(*) as nb
FROM mdl_user U
INNER JOIN mdl_log L
ON U.id = L.userid
AND L.module = 'user' AND L.action='login'
AND L.time > 1346495708";
$prep = $this->bdd->query($query);
$prep->execute();
$data = $prep->fetch();
$this->reference = $data['nb'];
}
public function statActivite() {
$query = ("SELECT COUNT(*) as nb ,U.lastname
FROM mdl_user U
INNER JOIN mdl_log L
ON U.id = L.userid
AND L.module = 'user' AND L.action='login'
AND L.time > 1346495708
GROUP BY L.userid order by nb desc");
$prep = $this->bdd->query($query);
$prep->execute();
while ($data = $prep->fetch(PDO::FETCH_OBJ)) {
$this->resultat_pour100[] = array(
"brut" => $data->nb,
"chiffre" => $this->proportion($data->nb),
"nom" => $data->lastname);
}
}
public function getSommeP() {
return $this->somme;
}
public function getResultatP100() {
return $this->resultat_pour100;
}
}
?>
Pour l'utiliser très facile,
modifier les accès base de donnée avec mot de passe
$this->bdd = new PDO('mysql:host=localhost;dbname=votre table', 'votre identifiant', 'votre passe');
l'enregistrer dans un dossier accesible,
et le lancer .
Le script analyse à partir de la rentrée septembre 2012
si vous souhaite le modifier c'est ici
AND L.time > 1346495708
il suffit d'aller sur
et selectionner la date, il vous donnera ce nombre.
Il n'y a pas beaucoup de résultat, car l'image serais trop grande,
avec l'interface moodle il faut vraiment passer beaucoup trop de temps pour avoir ces résultat
généraux et en même temps
il faudra crée une pagination.