|
Posted by Kuna on 11/07/06 09:36
Hi All,
I am trying to create a gantt chart in php by getting data from
database. I am using WindowsXp OS and having php-4 and my-sql DB. I
have installed the JPGRAPH package to my system and including the
jpgraph modules accordingly. I am able to create a gantt chart by
hardcoding the datas but when I am trying to get the data from database
then I am not able to get the chart it is showing errors. I think thre
might be some problem in my code . So please rectify my code I have
posted here.
Thanks,
Kuna
<?php
include ("C:/Program
Files/xampp/htdocs/Graph/jpgraph-1.20.5/src/jpgraph.php");
include ("C:/Program
Files/xampp/htdocs/Graph/jpgraph-1.20.5/src/jpgraph_gantt.php");
// Basic Gantt graph
$graph = new GanttGraph();
$graph->title->Set("Project StartDate and EndDate");
// Explicitely set the date range
// (Autoscaling will of course also work)
$graph->SetDateRange('2006-01-01','2007-12-31');
// 1.5 line spacing to make more room
$graph->SetVMarginFactor(1.5);
// Setup some 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');
// 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);
// For the titles we also add a minimum width of 100 pixels for the
Task name column
$graph->scale->actinfo->SetColTitles(
array('Note','Task','Duration','Start','Finish'),array(30,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');
// Uncomment this to keep the columns but show no headers
//$graph->scale->actinfo->Show(false);
// Setup the icons we want to use
$erricon = new IconImage(GICON_FOLDER,0.8);
$startconicon = new IconImage(GICON_FOLDEROPEN,0.6);
$endconicon = new IconImage(GICON_TEXTIMPORTANT,0.5);
// Set the variables for the database access:
$Host = "localhost";
$User = "root";
$Password = "";
$DBName = "zend";
$TableName = "tbl_projects";
$Link = mysql_connect ($Host, $User, $Password);
$Query = "SELECT * from $TableName ";
$Result = mysql_db_query($DBName, $Query);
$j=0;
while ($Row=mysql_fetch_array($Result)) {
$duration=$Row["Project_End"]-$Row["Project_Start"];
$data[] =
array(array($j,array($erricon,$Row["ProjectName"],$duration,$Row["Project_Start"],$Row["Project_End"])
,
$Row["Project_Start"],$Row["Project_End"],FF_ARIAL,FS_NORMAL,8));
++$j;
print $j;
}
// 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]);
//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");
//$bar->title->SetCSIMTarget(array('#1'.$i,'#2'.$i,'#3'.$i,'#4'.$i,'#5'.$i),array('11'.$i,'22'.$i,'33'.$i));
$graph->Add($bar);
}
// Output the chart
$graph->Stroke();
?>
[Back to original message]
|