Problème jpgraphe (gantt)/base de données [Résolu]

challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention - 30 mars 2015 à 16:33 - Dernière réponse : challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention
- 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
Afficher la suite 

11 réponses

Répondre au sujet
jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - 30 mars 2015 à 16:43
0
Utile
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 ... ??


Commenter la réponse de jordane45
challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention - 30 mars 2015 à 17:51
0
Utile
6
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)
challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention > jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - 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
jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention > challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention - 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 ) ??
challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention > jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - 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é
challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention - 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 .
jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention > challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention - 31 mars 2015 à 17:04
Arf.
Oui. il faut éviter les espaces et les accents dans les noms des champs d'une BDD....
A la limite.. remplacer les espaces par des underscores ( date début' => date_debut' )

PS: Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
Commenter la réponse de challenger11
challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention - 31 mars 2015 à 17:27
0
Utile
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
Commenter la réponse de challenger11
jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - Modifié par jordane45 le 31/03/2015 à 17:35
0
Utile
1
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);
challenger11 16 Messages postés lundi 30 mars 2015Date d'inscription 16 avril 2015 Dernière intervention - 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
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.