A voir également:
- Affichage graphique [Jpgraph] avec BdD
- Changer carte graphique - Guide
- Affichage double ecran - Guide
- Graphique excel - Guide
- Graphique sparkline - Guide
- Windows 11 affichage classique - Guide
4 réponses
bonjour a tous, voila un code que j'utilise pour afficher dans un diagramme de gauntt, les noms des projets avec date de debut et date de fin, que je charche de ma base de données mySQL
mais le probleme ya toujours un message d'errure :
"Chosen locale file ("lang/en.inc.php") for error messages does not exist or is not readable for the PHP process. Please make sure that the file exists and that the file permissions are such that the PHP process is allowed to read this file."
voici le code en question
<?
include ( "config/config.php");
include ( "include/jpgraph.php");
include ( "include/jpgraph_gantt.php");
@MYSQL_CONNECT($serveur,$login,$pass) or die ("Le Serveur ne répond pas");
@MYSQL_SELECT_DB("$base") or die ("Connexion à la base $base impossible");
$x = 0;
$lire = mysql_query("SELECT * FROM $table_mp order by id");
$num = mysql_num_rows($lire);
for($x; $x<=$num; $x++)
{
$lire = mysql_query("SELECT * FROM $table_mp where id=$x");
while ($d=mysql_fetch_row($lire))
{
$data[$x][0] = $d["0"];
$data[$x][1] = $d["1"];
$data[$x][2] = $d["2"];
$data[$x][3] = $d["3"];
$data[$x][4] = $d["4"];
}
}
$graph = new GanttGraph ();
$graph->title-> Set("Gantt Graph using CreateSimple()");
// Setup scale
$graph->ShowHeaders( GANTT_HYEAR | GANTT_HMONTH | GANTT_HDAY | GANTT_HWEEK);
$graph->scale-> week->SetStyle(WEEKSTYLE_FIRSTDAY);
// Add the specified activities
$graph->CreateSimple( $data);
// .. and stroke the graph
$graph->Stroke();
?>
merci
mais le probleme ya toujours un message d'errure :
"Chosen locale file ("lang/en.inc.php") for error messages does not exist or is not readable for the PHP process. Please make sure that the file exists and that the file permissions are such that the PHP process is allowed to read this file."
voici le code en question
<?
include ( "config/config.php");
include ( "include/jpgraph.php");
include ( "include/jpgraph_gantt.php");
@MYSQL_CONNECT($serveur,$login,$pass) or die ("Le Serveur ne répond pas");
@MYSQL_SELECT_DB("$base") or die ("Connexion à la base $base impossible");
$x = 0;
$lire = mysql_query("SELECT * FROM $table_mp order by id");
$num = mysql_num_rows($lire);
for($x; $x<=$num; $x++)
{
$lire = mysql_query("SELECT * FROM $table_mp where id=$x");
while ($d=mysql_fetch_row($lire))
{
$data[$x][0] = $d["0"];
$data[$x][1] = $d["1"];
$data[$x][2] = $d["2"];
$data[$x][3] = $d["3"];
$data[$x][4] = $d["4"];
}
}
$graph = new GanttGraph ();
$graph->title-> Set("Gantt Graph using CreateSimple()");
// Setup scale
$graph->ShowHeaders( GANTT_HYEAR | GANTT_HMONTH | GANTT_HDAY | GANTT_HWEEK);
$graph->scale-> week->SetStyle(WEEKSTYLE_FIRSTDAY);
// Add the specified activities
$graph->CreateSimple( $data);
// .. and stroke the graph
$graph->Stroke();
?>
merci
Vous n'êtes pas un cas isolé, car j'ai le même problème, même en testant les valeurs null pour exécuter ou non la commande stroke, rien n'y fait
pmef93psg
Messages postés
1
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
14 juin 2007
14 juin 2007 à 17:22
14 juin 2007 à 17:22
Partant du principe que l'affichage d'un segment de droite nécessite une valeur de départ et de fin, une solution (surement perfectible) est de tester l'existence de valeur différente de 'null'.
Si dans la boucle de tableau, toutes les valeurs sont nulles, on force à la sortie de boucle la valeur du premier élément de tableau à une valeur quelconque différente de 0 (laissant toutes les autres nulles).
Dans ce cas le graphe s'affiche puisqu'il existe au moins une valeur mais comme cette valeur est unique aucun segment n'apparait dans le graphe, évitant ainsi le message d'erreur : JpGraph Error Cannot use auto scaling since it is impossible to determine a valid min/max value of the Y-axis (only null values).
$data_existe=0;
for ($t=0;$t<$nb_element_au_tableau;$t++) {
if ( $ydata[$t]!=NULL) $data_existe=1;
}
if($data_existe==0)$ydata[0]=0.0001;$data_existe=1;
.../...
$lineplot=new LinePlot($ydata);
$graph->Add($lineplot);
.../...
if($data_existe==1)$graph->Stroke();
Voilà, il y a certainement plus propre mais c'est déjà un début
Si dans la boucle de tableau, toutes les valeurs sont nulles, on force à la sortie de boucle la valeur du premier élément de tableau à une valeur quelconque différente de 0 (laissant toutes les autres nulles).
Dans ce cas le graphe s'affiche puisqu'il existe au moins une valeur mais comme cette valeur est unique aucun segment n'apparait dans le graphe, évitant ainsi le message d'erreur : JpGraph Error Cannot use auto scaling since it is impossible to determine a valid min/max value of the Y-axis (only null values).
$data_existe=0;
for ($t=0;$t<$nb_element_au_tableau;$t++) {
if ( $ydata[$t]!=NULL) $data_existe=1;
}
if($data_existe==0)$ydata[0]=0.0001;$data_existe=1;
.../...
$lineplot=new LinePlot($ydata);
$graph->Add($lineplot);
.../...
if($data_existe==1)$graph->Stroke();
Voilà, il y a certainement plus propre mais c'est déjà un début
je ne comprend pas bien ton code :
J'ai fais un graphique qui m'affiche la somme du nombre d'heures de presence par jour.
J'ai l'impression que tu ne te connectes pas à ta base, et ta façon de remplir tes tableaux me semble compliquée.
Pour exemple mon script qui fonctionne à merveille !!!!!!!!!
Dans config.php, les infos relative à la base : dbhost, dbname, dbuname et dbpass
$sql_h : la requête qui me somme les heures par journée
$data1y = NULL;
$data1x = NULL; //l'initialisation des séries x et y
$Resultat = mysql_query($sql_h);
for ($Compteur=0 ; $Compteur<mysql_numrows($Resultat) ; $Compteur++)
{
$data1y[]=mysql_result($Resultat , $Compteur , "Heures");
$data1x[]=mysql_result($Resultat , $Compteur , "date");
} // la construction des tableaux
et le reste est classique
mon script :
<?php
include ("config.php");
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_bar.php");
$sql_h = 'SELECT `date`, SUM( `HeuresMatin` + `heuresSoir` ) AS `Heures` FROM `Table_saisies` WHERE LEFT( `Date`, 7 )="'.$Mois.'" GROUP BY `Date` ORDER BY `Date`;';
@mysql_connect($dbhost,$dbuname,$dbpass) or die("impossible de se connecter : ". mysql_error());
@mysql_select_db($dbname) or die("impossible de sélectionner la base : ". mysql_error());
$data1y = NULL;
$data1x = NULL;
$Resultat = mysql_query($sql_h);
for ($Compteur=0 ; $Compteur<mysql_numrows($Resultat) ; $Compteur++)
{
$data1y[]=mysql_result($Resultat , $Compteur , "Heures");
$data1x[]=mysql_result($Resultat , $Compteur , "date");
}
mysql_close();
// Create the graph. These two calls are always required
$graph = new Graph(400,400,"auto");
$graph->SetScale("textlin");
$graph->SetShadow();
$graph->img->SetMargin(40,30,20,80);
// Create the bar plots
$b1plot = new BarPlot($data1y);
$b1plot->SetFillColor("orange");
$b1plot->value->Show();
// ...and add it to the graPH
$graph->Add($b1plot);
$graph->title->Set("Les stats horaires : ".$Mois);
$graph->xaxis->SetTickLabels($data1x);
$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->title->Set("");
$graph->yaxis->title->Set("Nombre d'heures");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
// Display the graph
$graph->Stroke();
?>
J'ai fais un graphique qui m'affiche la somme du nombre d'heures de presence par jour.
J'ai l'impression que tu ne te connectes pas à ta base, et ta façon de remplir tes tableaux me semble compliquée.
Pour exemple mon script qui fonctionne à merveille !!!!!!!!!
Dans config.php, les infos relative à la base : dbhost, dbname, dbuname et dbpass
$sql_h : la requête qui me somme les heures par journée
$data1y = NULL;
$data1x = NULL; //l'initialisation des séries x et y
$Resultat = mysql_query($sql_h);
for ($Compteur=0 ; $Compteur<mysql_numrows($Resultat) ; $Compteur++)
{
$data1y[]=mysql_result($Resultat , $Compteur , "Heures");
$data1x[]=mysql_result($Resultat , $Compteur , "date");
} // la construction des tableaux
et le reste est classique
mon script :
<?php
include ("config.php");
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_bar.php");
$sql_h = 'SELECT `date`, SUM( `HeuresMatin` + `heuresSoir` ) AS `Heures` FROM `Table_saisies` WHERE LEFT( `Date`, 7 )="'.$Mois.'" GROUP BY `Date` ORDER BY `Date`;';
@mysql_connect($dbhost,$dbuname,$dbpass) or die("impossible de se connecter : ". mysql_error());
@mysql_select_db($dbname) or die("impossible de sélectionner la base : ". mysql_error());
$data1y = NULL;
$data1x = NULL;
$Resultat = mysql_query($sql_h);
for ($Compteur=0 ; $Compteur<mysql_numrows($Resultat) ; $Compteur++)
{
$data1y[]=mysql_result($Resultat , $Compteur , "Heures");
$data1x[]=mysql_result($Resultat , $Compteur , "date");
}
mysql_close();
// Create the graph. These two calls are always required
$graph = new Graph(400,400,"auto");
$graph->SetScale("textlin");
$graph->SetShadow();
$graph->img->SetMargin(40,30,20,80);
// Create the bar plots
$b1plot = new BarPlot($data1y);
$b1plot->SetFillColor("orange");
$b1plot->value->Show();
// ...and add it to the graPH
$graph->Add($b1plot);
$graph->title->Set("Les stats horaires : ".$Mois);
$graph->xaxis->SetTickLabels($data1x);
$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->title->Set("");
$graph->yaxis->title->Set("Nombre d'heures");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
// Display the graph
$graph->Stroke();
?>