AmCharts - Création de graphique PhP
La génération de graphique en PhP peut vite s’avérer un vrai calvaire mais heureusement pour nous il existe AmCharts.
AmCharts va nous permettre de générer facilement un graphique en Flash avec des données issues d’une base de donnée, l’avantage d’AmCharts reside dans sa configuration entièrement réalisée en XML, il suffira donc de générer un fichier XML via PhP afin de réaliser notre graphique.
La première étape consiste à uploder les fichiers (amcolumn_settings.xml, amcolumn_data.xml, swfobject.js et amcolumn.swf) dans un dossier à la racine de votre site web (dans notre exemple ce sera le dossier graphiques ).
Ensuite il faut éditer le fichier amcolumn_settings.xml afin de paramétrer l’animation Flash, je vous invite à lire la documentation afin de connaître les différentes modifications possibles.
Voici le code à insérer dans votre page HTML afin d’afficher le graphique
<script type=”text/javascript” src=”statistiques/swfobject.js”></script>
<div id=”flashcontent”>
<strong>Flash Player est nécessaire pour afficher les statistiques</strong>
</div><script type=”text/javascript”>
// <![CDATA[
var so = new SWFObject("statistiques/amcolumn.swf", "amcolumn", "500", "380", "8", "#ffffff");
so.addVariable("path", "statistiques/");
so.addVariable("settings_file", escape("statistiques/amcolumn_settings.xml"));
so.addVariable("data_file", escape("statistiques/amcolumn_data.xml"));
so.addVariable("preloader_color", "#999999");
so.write("flashcontent");
// ]]>
</script>
et enfin voici le code PhP qui génère le fichier XML
//on va créer le fichier XML qui contient les statistiques dans cet exemple nous allons créer un graphique qui affiche le nombre de visites d’un profil utilisateur en fonction du sexe des personnes qui l’on consulté.
//selection des champs souhaités dans la table statistiques
$sqlstat = “SELECT * FROM statistiques WHERE id=’$id’”;
$reqstat = mysql_query($sqlstat) or die(’Erreur SQL !’.mysql_error());//création de la structure xml
$fichier = ‘<?xml version=”1.0″ encoding=”UTF-8″?>’;
$fichier .= ‘<chart>’;while ($datastat = mysql_fetch_array($reqstat) )
{
$nbr_visites_h = $datastat['nbr_visites_h'];
$nbr_visites_f = $datastat['nbr_visites_f'];
$nbr_visites_c = $datastat['nbr_visites_c'];}
$fichier .= “<series>”;
$fichier .= “ <value xid=’profil’>Nombre de visites de votre profil</value>”;
$fichier .= “</series>”;
$fichier .= “<graphs>”;
$fichier .= “<graph gid=’Homme’ title=’Hommes’>”;
$fichier .= “ <value xid=’profil’>$nbr_visites_h</value>”;
$fichier .= “ </graph>”;
$fichier .= “ <graph gid=’Femme’ title=’Femmes’>”;
$fichier .= “ <value xid=’profil’>$nbr_visites_f</value>”;
$fichier .= “ </graph>”;
$fichier .= “ <graph gid=’Couple’ title=’Couples’>”;
$fichier .= “ <value xid=’profil’>$nbr_visites_c</value>”;
$fichier .= “ </graph>”;
$fichier .= “</graphs>”;$fichier .= ‘</chart>’;
//on ouvre le fichier amcolumn_data.xml en lecture et écriture. Le fichier est créé s’il n’existait //pas. S’il existait déjà, sa longueur est ramenée à 0. Le pointeur de flux est placé au début du //fichier. Ensuite l’on écrit $fichier dans le fichier XML et bien entendu on le ferme.
$fp = fopen(”statistiques/amcolumn_data.xml”, ‘w+’);
fputs($fp, $fichier);
fclose($fp);
et voila le résultat –> ici
Ce code est à modifier selon vos bessoin, et il existe plusieures varations de graphiques (colonnes, lignes etc..) à découvrir sur le site AmCharts (site en anglais).