Problème jpgraphe (gantt)/base de données

Résolu
challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015 - Modifié par jordane45 le 30/03/2015 à 16:40
challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015 - 31 mars 2015 à 17:47
Bonjour,
en effet je veux générer un diagramme de Gantt donc j'utilise jpgraphe.J'ai trouvé plusieurs exemples seulement je n'arrive pas a faire la liaison correcte avec ma base de donnée pour que la date début et la date fin ainsi les autres variables serons chargées directement depuis ma base de donnée donc voici mon code si vous pouvez m'aider je vous serais très reconnaissant
merci .


<?php 
// content="text/plain; charset=utf-8"
// Gantt example
require_once ('src/jpgraph.php');
require_once ('src/jpgraph_gantt.php');
 
$graph = new GanttGraph();
 
$graph->title->Set("Only month & year scale");
 
// Setup some "very" nonstandard colors
$graph->SetMarginColor('lightgreen@0.8');
$graph->SetBox(true,'yellow:0.6',2);
$graph->SetFrame(true,'darkgreen',4);
$graph->scale->divider->SetColor('yellow:0.6');
$graph->scale->dividerh->SetColor('yellow:0.6');
 
// Explicitely set the date range 
// (Autoscaling will of course also work)
$graph->SetDateRange('2015-03-30','2016-4-10');

 
// Display month and year scale with the gridlines
$graph->ShowHeaders(GANTT_HMONTH | GANTT_HYEAR);
$graph->scale->month->grid->SetColor('gray');
$graph->scale->month->grid->Show(true);
$graph->scale->year->grid->SetColor('gray');
$graph->scale->year->grid->Show(true);
 
 
// Setup activity info
 
// For the titles we also add a minimum width of 100 pixels for the Task name column
$graph->scale->actinfo->SetColTitles(
    array('Name','Duration','Start','Finish'),array(100));
$graph->scale->actinfo->SetBackgroundColor('green:0.5@0.5');
$graph->scale->actinfo->SetFont(FF_ARIAL,FS_NORMAL,10);
$graph->scale->actinfo->vgrid->SetStyle('solid');
$graph->scale->actinfo->vgrid->SetColor('gray');

//connexion à la base de donnée
mysql_connect('localhost', 'root', '');
mysql_select_db('gantt') ;
 
 $requete=("SELECT nom , durée, date début, date fin FROM ga ");
 $req=mysql_query($requete);
 while($ligne=mysql_fetch_array($req))
 {
 
 $name=$ligne[0];
 $duration=$ligne[1];
 $db=$ligne[2];
 $df=$ligne[3];

// Data for our example activities
$data = array(
    array(0,array("$name","$duration","$db","$df")
          , "$db","$df",FF_ARIAL,FS_NORMAL,8),
);
 }   
// Create the bars and add them to the gantt chart
for($i=0; $i<count($data); ++$i) {
    $bar = new GanttBar($data[$i][0],$data[$i][1],$data[$i][2],$data[$i][3],"[50%]",10);
    if( count($data[$i])>4 )
        $bar->title->SetFont($data[$i][4],$data[$i][5],$data[$i][6]);
    $bar->SetPattern(BAND_RDIAG,"yellow");
    $bar->SetFillColor("gray");
    $bar->progress->Set(0.5);
    $bar->progress->SetPattern(GANTT_SOLID,"darkgreen");
    $graph->Add($bar);
}
 
// Output the chart
$graph->Stroke();
 
?>



EDIT : Ajout des balises de code
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

4 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
30 mars 2015 à 16:43
Bonjour,


seulement je n'arrive pas a faire la liaison correcte avec ma base de donnée pour que la date début et la date fin ainsi les autres variables serons chargées directement depuis ma base de donnée

Je n'ai rien compris....
Pourrais tu essayer de reformuler en expliquant clairement le souci rencontré ?
par exemple : Que devrais tu obtenir.. et qu'est-ce que ton code actuel te donne... en quoi est-ce faux ... ??


0
challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015
30 mars 2015 à 17:51
Pour commencer merci jordane45 pour votre attention , en second lieux je veux obtenir un diagramme de gantt simple dont la date début et fin de la phase , le nom de la phase et le % sont chargées depuis ma base de données.Le cede généré ne m'affiche aucun erreur mais il n'affiche pas un diagramme de gantt seulement une petit icone gris se qui implique qu'il existe des erreurs ( je suis pas un expert en PHP je suis un débutant pour être claire ) voici le code que j'ai trouvé parmis les exemples proposé de la part de jpgraphe il fonctionne mes avec mes modifications il ne l'est plus
<?php
// content="text/plain; charset=utf-8"
// Gantt example
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_gantt.php');

$graph = new GanttGraph();

$graph->title->Set("Only month & year scale");

// Setup some "very" nonstandard colors
$graph->SetMarginColor('lightgreen@0.8');
$graph->SetBox(true,'yellow:0.6',2);
$graph->SetFrame(true,'darkgreen',4);
$graph->scale->divider->SetColor('yellow:0.6');
$graph->scale->dividerh->SetColor('yellow:0.6');

// Explicitely set the date range
// (Autoscaling will of course also work)
$graph->SetDateRange('2001-10-06','2002-4-10');

// Display month and year scale with the gridlines
$graph->ShowHeaders(GANTT_HMONTH | GANTT_HYEAR);
$graph->scale->month->grid->SetColor('gray');
$graph->scale->month->grid->Show(true);
$graph->scale->year->grid->SetColor('gray');
$graph->scale->year->grid->Show(true);


// Setup activity info

// For the titles we also add a minimum width of 100 pixels for the Task name column
$graph->scale->actinfo->SetColTitles(
array('Name','Duration','Start','Finish'),array(100));
$graph->scale->actinfo->SetBackgroundColor('green:0.5@0.5');
$graph->scale->actinfo->SetFont(FF_ARIAL,FS_NORMAL,10);
$graph->scale->actinfo->vgrid->SetStyle('solid');
$graph->scale->actinfo->vgrid->SetColor('gray');

// Data for our example activities
$data = array(
array(0,array("Pre-study","102 days","23 Nov '01","1 Mar '02")
, "2001-11-23","2002-03-1",FF_ARIAL,FS_NORMAL,8),
array(1,array("Prototype","21 days","26 Oct '01","16 Nov '01"),
"2001-10-26","2001-11-16",FF_ARIAL,FS_NORMAL,8),
array(2,array("Report","12 days","1 Mar '02","13 Mar '02"),
"2002-03-01","2002-03-13",FF_ARIAL,FS_NORMAL,8)
);

// Create the bars and add them to the gantt chart
for($i=0; $i<count($data); ++$i) {
$bar = new GanttBar($data[$i][0],$data[$i][1],$data[$i][2],$data[$i][3],"[50%]",10);
if( count($data[$i])>4 )
$bar->title->SetFont($data[$i][4],$data[$i][5],$data[$i][6]);
$bar->SetPattern(BAND_RDIAG,"yellow");
$bar->SetFillColor("gray");
$bar->progress->Set(0.5);
$bar->progress->SetPattern(GANTT_SOLID,"darkgreen");
$graph->Add($bar);
}

// Output the chart
$graph->Stroke();

?>


(si vous avez des suggestions pour des tutos à suivre ou des exemples que vous avez tester sa sera le bien venu merci encore une autre fois)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
30 mars 2015 à 18:12
Visiblement... c'est ta construction ton ton $data qui n'est pas bon....

Essayes ça éventuellement:
$data = array();
$x=0;
 while($ligne=mysql_fetch_array($req)) {
 
 $name=$ligne[0];
 $duration=$ligne[1];
 $db=$ligne[2];
 $df=$ligne[3];

// Data for our example activities
$data[]= array($x,array("$name","$duration","$db","$df") , "$db","$df",FF_ARIAL,FS_NORMAL,8));
$x++;
 }   






Pour savoir si ton array DATA a la même forme que celui de l'exemple... tu n'as qu'à en faire un PRINT_R
(tu le fais une fois sur l'exemple.. une fois sur ton code.. et tu compares...)
echo "<pre>";
print_r($data);
echo "</pre>";
0
challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
31 mars 2015 à 11:49
bonjour Jordan45 ,
oui normalement il y a une erreur dans mon data c'est ce que je pense aussi d'ailleurs.J'ai suivi vos conseils seulement cette fois il m'affiche une erreur de syntaxe :
Parse error: syntax error, unexpected ')' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\jpgraph-3.5.0b1\gantt6.php on line 58
c'est à dire dans cette ligne :
$data[] = array($x ,array("$name","$duration","$db","$df") , "$db" ,"$df" FF_ARIAL,FS_NORMAL,8));

j'ai enlevé la dernière parenthèse
$data[] = array($x ,array("$name","$duration","$db","$df") , "$db" ,"$df", FF_ARIAL,FS_NORMAL,8);

il ne m'affiche plus d'erreur mais il m'affiche une icone gris et pas de diagramme de gantt avez vous une idée et un grand merci
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344 > challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015
31 mars 2015 à 11:56
t avez vous une idée

Oui .... as tu fais , comme je te l'ai proposé dans mon message précédent, des PRINT_R de $DATA pour savoir ce qu'il contient ( dans ton code ET dans le code Exemple ) ??
0
challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
31 mars 2015 à 12:23
oui j'ai essayé sur l'exemple je l'ai introduit dans le code exemple après le tableau et après la boucle for et il n'affiche plus le diagramme mais comme dans mon code il affiche une petite icone gris .
Dans mon code j'ai testé aussi et sa n'a rien changé pas de message d'erreur seulement cette icone gris. En effet je suis censé voire quoi exactement j'ai pas bien compris l'utilité
0
challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015
31 mars 2015 à 17:02
je vous tiens au courant le problème est résolue j'ai affiché les erreurs de ma requête sql avec la commande suivante :
exit('Erreur SQL ligne '.__LINE__.' : '.mysql_error());

ce qui m'a indiqué un message d'erreur suivant :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\jpgraph-3.5.0b1\gantt6.php on line 50
et pour résoudre cette erreur j'ai enlevé les virgules et les espace dans les champs de ma base de données c'est à dire j'ai changé 'date début' par 'date_debut' et sa marche merci beaucoup à Jordan qui m 'a aidé énormément .
0
challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015
31 mars 2015 à 17:27
merci vraiment Jordane j'ai une autre question svp j'aimerais modifier la taille de mon diagramme avez vous une idée !? j'ai cherché dans la bibliothèque jpgraphe.php le mot "size" je vous ment pas sa galère j'ai trouvé pleins de chose du coût je ne sais pas quoi changer
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 31/03/2015 à 17:35
Ceci est une nouvelle question et devrait (selon la charte de ce forum) faire office d'une nouvelle discussion.....

Mais bon...
Lorsque tu appelles le constructeur du graphique
$graph = new GanttGraph();

Tu peux lui passer des paramètres;
GanttGraph($aWidth = 0, $aHeight = 0, $aCachedName = "", $aTimeOut = 0, $aInline = true) 


Les deux premiers correspondent à la largeur et la hauteur du graphique.

Donc ...ceci devrait fonctionner
$graph = new GanttGraph(500,300);
0
challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015
31 mars 2015 à 17:47
exactement sa fonctionne, merci vraiment je poserais plus de question dans ce sujet claire et net ( excuse moi je suis nouveau dans le forum ^^ ) à la prochaine jordane45
0
Rejoignez-nous