Page 1 sur 1

Problème pour afficher plusieurs graphique avec Jpgraph

Posté : 30 nov. 2012, 17:58
par Pierrot97
Bonjour à tous,

J'essaye de faire apparaitre plusieurs camembert sur la même page.
Pour les autre graphiques ça passe mais pour les 2 camembert en question ça pose problème et je ne trouve pas pourquoi.

Code : Tout sélectionner

<?php include ("../jpGraph/jpgraph.php"); include ("../jpGraph/jpgraph_pie.php"); include ("../jpGraph/jpgraph_mgraph.php"); define('MYSQL_HOST', 'localhost'); define('MYSQL_USER', 'root'); define('MYSQL_PASS', ''); define('MYSQL_DATABASE', 'glpi'); // Tableaux de données destinées à JpGraph $tableaucategorie = array(); $tableauouvert = array(); $tableauouverttotal = ""; $tableaumois = ""; $moislettre = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Decembre"); $tableauannee = ""; $sql ='SELECT name AS categorie, COUNT(ID) AS ouvert FROM `glpi_excel` WHERE YEAR(date) = 2012 AND MONTH(date) = 6 GROUP BY name'; $sql2 = 'SELECT COUNT(ID) AS total_ouvert FROM glpi_excel WHERE YEAR(date) = 2012 AND MONTH(date) = 6'; $sql3='SELECT MONTH(date) as MOIS FROM glpi_excel WHERE YEAR(date) = 2012 AND MONTH(date) = 6'; $sql4='SELECT YEAR(date) as ANNEE FROM glpi_excel WHERE YEAR(date) = 2012 AND MONTH(date) = 6'; // Connexion à la BDD $mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql'); // Sélection de la base de données @mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base'); // Requête $mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Pb de requête1'); $mysqlQuery2 = @mysql_query($sql2, $mysqlCnx) or die('Pb de requête2'); $mysqlQuery3 = @mysql_query($sql3, $mysqlCnx) or die('Pb de requête3'); $mysqlQuery4 = @mysql_query($sql4, $mysqlCnx) or die('Pb de requête4'); // Fetch sur chaque enregistrement while ($row = mysql_fetch_array($mysqlQuery, MYSQL_ASSOC)) { // Alimentation des tableaux de données $tableaucategorie[] = $row['categorie']; $tableauouvert[] = $row['ouvert']; $total_val=array_sum($tableauouvert); $idx=0; } while ($row = mysql_fetch_array($mysqlQuery2, MYSQL_ASSOC)) { $tableauouverttotal = $row['total_ouvert']; } while ($row = mysql_fetch_array($mysqlQuery3, MYSQL_ASSOC)) { $tableaumois = $moislettre[$row['MOIS']]; } while ($row = mysql_fetch_array($mysqlQuery4, MYSQL_ASSOC)) { $tableauannee = $row['ANNEE']; } //var_dump($tableaucategorie); //var_dump($tableauouvert); // ******************************************************************** // PARTIE : Création du graphique // ******************************************************************** $size_tableauouvert=count($tableauouvert); function xyCallback($yval) { global $tableaucategorie, $total_val, $idx,$size_tableauouvert; $yval_pourcent=round(10000*$yval/$total_val)/100; $indice=$size_tableauouvert -1 - $idx++; return ''.$tableaucategorie[$indice]." ".$yval." -> ".$yval_pourcent." %"; } // On spécifie la largeur et la hauteur du graphique conteneur $graph = new PieGraph(1200,700); $graph->SetScale("intlin"); // Titre du graphique $titre_mois="Nombre de tickets ouverts(".$tableauouverttotal.") pour ".$tableaumois." ".$tableauannee." "; $graph->title->Set($titre_mois); $graph->title->SetFont(FF_FONT1,FS_BOLD); $graph->legend->SetPos(0.50,0.9,'center'); //$graph->title->Set("Nombre de tickets ouverts"); // Créer un graphique secteur (classe PiePlot) $oPie = new PiePlot($tableauouvert); // Légendes qui accompagnent chaque secteur, ici chaque année //$oPie->SetLegends($tableaucategorie); // position du graphique (légèrement à droite) $oPie->SetCenter(0.4); $oPie->value->SetFormatCallback('xyCallback'); $oPie->SetLabelType(PIE_VALUE_ABS); // Format des valeurs de type entier $oPie->value->Show(); $oPie->SetGuideLinesAdjust(1); // Ajouter au graphique le graphique secteur $graph->Add($oPie); // Provoquer l'affichage (renvoie directement l'image au navigateur) //$graph->Stroke(); // Tableaux de données destinées à JpGraph $tableaucategorie = array(); $tableauouvert = array(); $tableauouverttotal = ""; $tableaumois = ""; $moislettre = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Decembre"); $tableauannee = ""; $sql ='SELECT name AS categorie, COUNT(solvedate) AS ouvert FROM `glpi_excel` WHERE YEAR(date) = 2012 AND MONTH(date) = 6 GROUP BY name'; $sql2 = 'SELECT COUNT(solvedate) AS total_ouvert FROM glpi_excel WHERE YEAR(date) = 2012 AND MONTH(date) = 6'; $sql3='SELECT MONTH(date) as MOIS FROM glpi_excel WHERE YEAR(date) = 2012 AND MONTH(date) = 6'; $sql4='SELECT YEAR(date) as ANNEE FROM glpi_excel WHERE YEAR(date) = 2012 AND MONTH(date) = 6'; // Connexion à la BDD $mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql'); // Sélection de la base de données @mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base'); // Requête $mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Pb de requête1'); $mysqlQuery2 = @mysql_query($sql2, $mysqlCnx) or die('Pb de requête2'); $mysqlQuery3 = @mysql_query($sql3, $mysqlCnx) or die('Pb de requête3'); $mysqlQuery4 = @mysql_query($sql4, $mysqlCnx) or die('Pb de requête4'); // Fetch sur chaque enregistrement while ($row = mysql_fetch_array($mysqlQuery, MYSQL_ASSOC)) { // Alimentation des tableaux de données $tableaucategorie[] = $row['categorie']; $tableauouvert[] = $row['ouvert']; $total_val=array_sum($tableauouvert); $idx=0; } while ($row = mysql_fetch_array($mysqlQuery2, MYSQL_ASSOC)) { $tableauouverttotal = $row['total_ouvert']; } while ($row = mysql_fetch_array($mysqlQuery3, MYSQL_ASSOC)) { $tableaumois = $moislettre[$row['MOIS']]; } while ($row = mysql_fetch_array($mysqlQuery4, MYSQL_ASSOC)) { $tableauannee = $row['ANNEE']; } //var_dump($tableaucategorie); //var_dump($tableauouvert); // ******************************************************************** // PARTIE : Création du graphique // ******************************************************************** $size_tableauouvert=count($tableauouvert); function xyCallbacks($yval) { global $tableaucategorie, $total_val, $idx,$size_tableauouvert; $yval_pourcent=round(10000*$yval/$total_val)/100; $indice=$size_tableauouvert -1 - $idx++; return ''.$tableaucategorie[$indice]." ".$yval." -> ".$yval_pourcent." %"; } // On spécifie la largeur et la hauteur du graphique conteneur $graph1 = new PieGraph(1200,700); $graph1->SetScale("intlin"); // Titre du graphique $titre_mois="Nombre de tickets résolus(".$tableauouverttotal.") pour ".$tableaumois." ".$tableauannee." "; $graph1->title->Set($titre_mois); $graph1->title->SetFont(FF_FONT1,FS_BOLD); $graph1->legend->SetPos(0.50,0.9,'center'); //$graph->title->Set("Nombre de tickets ouverts"); // Créer un graphique secteur (classe PiePlot) $oPie = new PiePlot($tableauouvert); // Légendes qui accompagnent chaque secteur, ici chaque année //$oPie->SetLegends($tableaucategorie); // position du graphique (légèrement à droite) $oPie->SetCenter(0.4); $oPie->value->SetFormatCallback('xyCallbacks'); $oPie->SetLabelType(PIE_VALUE_ABS); // Format des valeurs de type entier $oPie->value->Show(); $oPie->SetGuideLinesAdjust(1); // Ajouter au graphique le graphique secteur $graph1->Add($oPie); // Provoquer l'affichage (renvoie directement l'image au navigateur) //$graph1->Stroke(); $mgraph = new MGraph(); $xpos1=3;$ypos1=3; $xpos2=3;$ypos2=700; $mgraph->Add($graph,$xpos1,$ypos1); $mgraph->Add($graph1,$xpos2,$ypos2); $mgraph->Stroke(); ?>
J'utilise la fonction mgraph qui est dans jpgraph pour avoir plusieurs graphique.
Les 2 graphiques sont fonctionnels, quand je vais apparaitre un seul ça passe mais les 2 en même temps non.

Merci à ceux qui pourront m'aider.

Cordialement,

Re: Problème pour afficher plusieurs graphique avec Jpgraph

Posté : 30 nov. 2012, 21:22
par moogli
salut,


change le nom du second "camenbert".

Avec php les paramètres sont passés par référence, du coup au deuxième tu "écrase" le premier, et tu ne vois que celui la.



@+

Re: Problème pour afficher plusieurs graphique avec Jpgraph

Posté : 03 déc. 2012, 22:25
par Pierrot97
Bonjour,

Déjà fait, ça n'as pas résolu le problème.
Mais j'ai pu identifié que le problème venait de la fonction suivante:
$size_tableauresolu=count($tableauresolu);
function Callbacks($yval) {
 global $tableaucategorie, $total_val, $idx,$size_tableauresolu;
 $yval_pourcent=round(10000*$yval/$total_val)/100;
 $indice=$size_tableauresolu -1 - $idx++;
  return ''.$tableaucategorie[$indice]." ".$yval." -> ".$yval_pourcent." %";
 }
J'ai pas encore trouvé comment résoudre le problème mais je cherche là.
De l'aide ne serait pas de refus. ^^

Cordialement,