Bonjour à tous,
Je vous partage aujourd'hui un script qui vous permettra d'afficher un tableau de statistiques des personnages races/classes.
Les valeurs sont affichées en pourcentage.
Le code est orienté objet et j'utilise les fonctions MySQLi orienté objet pour gérer la base de données.
Passons au code !
class.dbhandler.php:
[code=php]<?php
Class DatabaseHandler {
private $connectionLink = false;
/**
* @access public
* @param type $hostname
* @param type $username
* @param type $password
* @param type $database
*/
public function DatabaseHandler($hostname, $username, $password, $database) {
$this->connectionLink = new mysqli($hostname, $username, $password, $database);
if($this->connectionLink->connect_error) {
die('Erreur: La connexion au serveur MySQL a échoué !');
}
}
/**
* @access public
* @param type $query
* @param type $assoc=false
*/
public function query($query, $assoc=false) {
$sqlQuery = $this->connectionLink->query($query);
if(!$sqlQuery) {
die('Erreur: L\'exécution de la requête "' . $query . '" a échoué !<br />Erreur MySQL: ' . $this->connectionLink->error . '.');
}
if($assoc == false) {
return $sqlQuery;
} else {
return $sqlQuery->fetch_assoc();
}
}
/**
* @access public
* @param type $string
*/
public function escape_string($string) {
return $this->connectionLink->real_escape_string($string);
}
/**
* @access public
*/
public function __destruct() {
$this->connectionLink->close();
}
}
?>[/code]
Cette classe gère les connexions au serveur MySQL et les requêtes SQL.
class.statistics.php:
[code=php]<?php
Class Statistics {
private $cDB = null;
/**
* @access public
* @param type $cDB
*/
public function __construct(&$cDB) {
$this->cDB = $cDB;
}
/**
* @access public
*/
public function getNbCharacters() {
$query = "SELECT COUNT(*) AS nombre FROM `characters`";
$dataCharacters = $this->cDB->query($query, true);
return $dataCharacters['nombre'];
}
/**
* @access public
* @param type $class
*/
public function getNbCharactersClass($class) {
$query = sprintf("SELECT COUNT(*) AS nombre FROM `characters` WHERE `class` = '%s'", $this->cDB->escape_string($class));
$dataClass = $this->cDB->query($query, true);
return ceil($dataClass['nombre'] / $this->getNbCharacters() * 100);
}
/**
* @access public
* @param type $race
*/
public function getNbCharactersRace($race) {
$query = sprintf("SELECT COUNT(*) AS nombre FROM `characters` WHERE `race` = '%s'", $this->cDB->escape_string($race));
$dataRace = $this->cDB->query($query, true);
return ceil($dataRace['nombre'] / $this->getNbCharacters() * 100);
}
/**
* @access public
* @param type $race
* @param type $class
*/
public function getNbCharactersRaceClass($race, $class) {
$query = sprintf("SELECT COUNT(*) AS nombre FROM `characters` WHERE `race` = '%s' AND `class` = '%s'", $this->cDB->escape_string($race), $this->cDB->escape_string($class));
$dataRaceClass = $this->cDB->query($query, true);
return round($dataRaceClass['nombre'] / $this->getNbCharacters() * 100);
}
}
?>[/code]
Cette classe gère les statistiques des personnages.
index.php:
[code=php]<?php
/**
* @title: Tableau des statistiques des personnages races/classes
* @author: Allan
* @emulator: MaNGOS
* @version: 3.3.5
*/
/* Accès MySQL pour la base de données des personnages */
$characters = array();
$characters = array(
'hostname' => '127.0.0.1',
'username' => 'root',
'password' => '',
'database' => 'characters'
);
/* On charge le gestionnaire de bases de données */
if(!@include_once('class.dbhandler.php')) {
die('Erreur: Le fichier "class.dbhandler.php" est introuvable !');
}
/* On ouvre la connexion MySQL */
if(!defined('DATABASE_HANDLER')) {
$cDB = new DatabaseHandler($characters['hostname'], $characters['username'], $characters['password'], $characters['database']);
}
/* On charge le classe qui gère les statistiques */
if(!@include_once('class.statistics.php')) {
die('Erreur: Le fichier "class.statistics.php" est introuvable !');
}
$statistics = new Statistics($cDB);
?>
<html>
<head>
<title>Tableau de statistiques des personnages races/classes</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<table border="1" align="center">
<thead>
<tr>
<th> </th>
<th>Total</th>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_1.jpg" title="Guerrier"/></td>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_2.jpg" title="Paladin"/></td>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_3.jpg" title="Chasseur"/></td>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_4.jpg" title="Voleur"/></td>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_5.jpg" title="Prêtre"/></td>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_6.jpg" title="Chevalier de la mort"/></td>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_7.jpg" title="Chaman"/></td>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_8.jpg" title="Mage"/></td>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_9.jpg" title="Démoniste"/></td>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/class_11.jpg" title="Druide"/></td>
</tr>
</thead>
<tbody>
<tr>
<th>Total</th>
<th> </th>
<td align="center"><?php echo $statistics->getNbCharactersClass(1); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(2); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(6); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(7); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(9); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(11); ?> %</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_1_0.jpg" title="Humain"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(1); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 1); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 2); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 6); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 9); ?> %</td>
<td align="center">-</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_2_0.jpg" title="Orc"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(2); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 1); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 4); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 6); ?> %</td>
<td align="center"></td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 9); ?> %</td>
<td align="center">-</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_3_0.jpg" title="Nain"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 1); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 2); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 6); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 7); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 9); ?> %</td>
<td align="center">-</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_4_0.jpg" title="Elfe de la nuit"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 1); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 6); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 8); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 11); ?> %</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_5_0.jpg" title="Mort-vivant"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 1); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 6); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 9); ?> %</td>
<td align="center">-</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_6_0.jpg" title="Tauren"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(6); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 1); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 2); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 3); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 6); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 7); ?> %</td>
<td align="center">-</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 11); ?> %</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_7_0.jpg" title="Gnome"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(7); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 1); ?> %</td>
<td align="center">-</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 6); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 9); ?> %</td>
<td align="center">-</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_8_0.jpg" title="Troll"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 1); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 6); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 7); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 9); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 11); ?> %</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_9_0.jpg" title="Gobelin"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(9); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 1); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 6); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 7); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 9); ?> %</td>
<td align="center">-</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_10_0.jpg" title="Elfe de sang"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(10); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 1); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 2); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 4); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 6); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 9); ?> %</td>
<td align="center">-</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_11_0.jpg" title="Draeneï"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(11); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 1); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 2); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 3); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 6); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 7); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 8); ?> %</td>
<td align="center">-</td>
<td align="center">-</td>
</tr>
<tr>
<td align="center"><img src="http://eu.media.blizzard.com/wow/icons/18/race_22_0.jpg" title="Worgen"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(22); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 1); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 3); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 1); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 5); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 6); ?> %</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 8); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 1); ?> %</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 1); ?> %</td>
</tr>
</tbody>
</table>
</body>
</html>[/code]
Cette page gère les classes et affiche un tableau des statistiques des personnages races/classes.
Voilà c'est ici que ça se termine. Le script est relativement facile à comprendre.
Il peut facilement être modifié/adapté à un site.
Amicalement Allan.