PHP Tableau de statistiques des personnages races/classes // MaNGOS
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 &eacute;chou&eacute; !');
}
}

/**
* @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&eacute;cution de la requ&ecirc;te "' . $query . '" a &eacute;chou&eacute; !<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>&nbsp;</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&ecirc;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&eacute;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>&nbsp;</th>
<td align="center"><?php echo $statistics->getNbCharactersClass(1); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(2); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(4); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(6); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(7); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(9); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersClass(11); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 1); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 2); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 4); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 6); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(1, 9); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 1); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 4); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 6); ?>&nbsp;&percnt;</td>
<td align="center"></td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(2, 9); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 1); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 2); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 4); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 6); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 7); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(3, 9); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 1); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 4); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 6); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 8); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(4, 11); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 1); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 4); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 6); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 9); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 1); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 2); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(5, 3); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 6); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 7); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(6, 11); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 1); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 4); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 6); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(7, 9); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 1); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 4); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 6); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 7); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 9); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(8, 11); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 1); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 4); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 6); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 7); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(9, 9); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 1); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 2); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 4); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 6); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(10, 9); ?>&nbsp;&percnt;</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&iuml;"/></td>
<td align="center"><?php echo $statistics->getNbCharactersRace(11); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 1); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 2); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 3); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 6); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 7); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(11, 8); ?>&nbsp;&percnt;</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); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 1); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 3); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 1); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 5); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 6); ?>&nbsp;&percnt;</td>
<td align="center">-</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 8); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 1); ?>&nbsp;&percnt;</td>
<td align="center"><?php echo $statistics->getNbCharactersRaceClass(22, 1); ?>&nbsp;&percnt;</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.
Pièce(s) jointe(s) Miniature(s)
   

Retourner en haut Accueil