Skip to content

Instantly share code, notes, and snippets.

@AntoineAugusti
Created April 13, 2014 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AntoineAugusti/10586311 to your computer and use it in GitHub Desktop.
Save AntoineAugusti/10586311 to your computer and use it in GitHub Desktop.
<?php
// Connexion à la base de données
require "kernel/config.php";
$db = mysql_connect($host, $user, $pass) or die('Erreur de connexion '.mysql_error());
mysql_select_db($user,$db) or die('Erreur de sélection '.mysql_error());
// Requête SQL permettant la création de notre camembert
$query = mysql_query("SELECT nb_posts, username FROM users ORDER BY nb_posts DESC LIMIT 0,3");
// Récupère le nombre total de posts
$query_nb_total_posts = mysql_fetch_array(mysql_query("SELECT SUM(nb_posts) AS nb_posts FROM users"));
$nb_total_posts = $query_nb_total_posts['nb_posts'];
// Défini le nom de notre fonction JS et l'id du div HTML dans lequel se trouvera le camembert
$name_chart = "nb_post_users";
?>
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(<?php echo $name_chart; ?>);
function <?php echo $name_chart; ?>() {
var data = new google.visualization.DataTable();
// Nous n'avons que 2 légendes : le nom d'utilisateur (type string) et son nombre de posts (type number)
data.addColumn('string', 'Nom');
data.addColumn('number', 'Nombre de posts');
data.addRows([
<?php
$sum_nb_posts = '0'; // Initialisation du compteur de posts
// Boucle de la requête SQL
while ($donnees = mysql_fetch_array($query))
{
$username = addslashes($donnees['username']); // On oublie pas addslashes pour éviter qu'un guillemet provoque une erreur
$nb_posts = intval($donnees['nb_posts']);
$sum_nb_posts = $sum_nb_posts + $nb_posts; // Cumule le nombre de posts
$data .= "['".$username." : ".$nb_posts."', ".$nb_posts."],"; // J'ai choisi d'afficher la valeur directement dans la légende en écrivant '".$username." : ".$nb_posts."'
}
echo $data;
// Calcul et affichage du nombre de posts dont les auteurs ne sont pas dans le top
$nb_restant_posts = $nb_total_posts - $sum_nb_posts;
echo "['Autres utilisateurs : ".$nb_restant_posts."', ".$nb_restant_posts."]";
?>
]);
// Modifiez les options à votre convenance
var options = {
width: 450, height: 300,
title: 'Top du nombre de posts par utilisateur'
};
// Affichage du camembert généré dans le div défini au début
var chart = new google.visualization.PieChart(document.getElementById('<?php echo $name_chart; ?>'));
chart.draw(data, options);
}
</script>
</head>
<body>
<!-- Affichage du camembert -->
<div id="<?php echo $name_chart; ?>"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment