Creating Gantt Chart in PHP

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
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.


include ("C:/Program
include ("C:/Program

// Basic Gantt graph
$graph = new GanttGraph();
$graph->title->Set("Project StartDate and EndDate");

// Explicitely set the date range
// (Autoscaling will of course also work)

// 1.5 line spacing to make more room

// Setup some nonstandard colors

// Display month and year scale with the gridlines
$graph->ShowHeaders(GANTT_HMONTH | GANTT_HYEAR);

// For the titles we also add a minimum width of 100 pixels for the
Task name column

// Uncomment this to keep the columns but show no headers

// 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);

while ($Row=mysql_fetch_array($Result)) {

  $data[] =
print $j;

// Create the bars and add them to the gantt chart
for($i=0; $i<count($data); ++$i) {
    $bar = new
    //if( count($data[$i])>4 )


// Output the chart


Re: Creating Gantt Chart in PHP

Kuna schreef:
Quoted text here. Click to load it

What errors are you getting?


Re: Creating Gantt Chart in PHP

Kuna wrote:
Quoted text here. Click to load it

You forgot three important parts here:

  1. What do you expect to get?
  2. What do you get? (No output because of the errors?)
  3. Exactly what errors are you getting?

Also, have you checked the data you got from the database to ensure it  
is right (reasonable values, correct type, etc.)?

Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.

Re: Creating Gantt Chart in PHP

Quoted text here. Click to load it

Thanks for replying me and I am really sorry I forgot to post the error
message. But now I am able to get into some solutions but the problem
is that still I am getting an error. I have populated the database with
all fields. I am again posting the new code and this is the erro
message I am getting. So please help me its urgent and important for
me. I will be grateful to you.

// Gantt dyaminc from MySQL example
include ("C:/Program
include ("C:/Program
include ("C:/Program


mysql_connect($host,$user,$password) or die("Could not connect: " .
mysql_select_db($db) or die("Could not select database: " .

$tasks = mysql_query("SELECT
DATE_FORMAT(start_date, '%e/%m') as fstart_date,
DATE_FORMAT(end_date, '%e/%m') as fend_date,
CONCAT((end_date - start_date), ' ','days') as duration
FROM tasks, task_type
WHERE tasks.task_type_id=task_type.task_type_id");

if ($row = mysql_fetch_array($tasks)) {
do {
$position[] = $row["task_position"];
$type[] = $row["task_type_value"];
$name[] = $row["task_name"];
$start_date[] = $row["start_date"];
$end_date[] = $row["end_date"];
$fstart_date[] = $row["fstart_date"];
$fend_date[] = $row["fend_date"];
$duration[] = $row["duration"];
}while($row = mysql_fetch_array($tasks));
$lines = mysql_num_rows($tasks);
$graph = new GanttGraph(800,640);


$graph->scale->week->SetFont(FF_ARIAL, FS_NORMAL, 8);
$graph->scale->month->SetFont(FF_ARIAL, FS_BOLD, 8);

$graph->scale->actinfo->SetColTitles (array('ID','Tasks',
$graph->scale->actinfo->SetFont(FF_ARIAL, FS_ITALIC, 8);

for($i=0; $i< $lines; ++$i) {
$activity = new GanttBar ($position[$i], array($position[$i],
$name[$i], $duration[$i],$fstart_date[$i],$fend_date[$i]),
$start_date[$i], $end_date[$i]);
// $activity = array($position[$i], $type[$i], $name[$i],
$start_date[$i], $end_date[$i]);
$activity ->SetPattern(BAND_RDIAG,"yellow");
$activity ->SetFillColor("red");
$activity->title->SetFont(FF_ARIAL, FS_NORMAL, 8);
// $graph->CreateSimple($activity);

Here is the Error Message :-
"Cannot autoscale Gantt chart. No dated activities exist.
[GetBarMinMax() start >= n]"

I will be waiting for your reply :)

Thanks and Regards,

Re: Creating Gantt Chart in PHP

Kuna wrote:
Quoted text here. Click to load it

OK, I'm not familiar with this specific package, but I looked at the  

The first thing which comes to mind is are your start and end dates in  
the correct format?  Have you tried echoing them to the screen to see  
what's in them?  According to the doc, they should be in the format  
'2006-11-07' as a string.  That's the default date format for MySQL in  
my system, but yours may be different.

Also, I don't like your line:

$activity = new GanttBar ($position[$i], array($position[$i],
   $name[$i], $duration[$i],$fstart_date[$i],$fend_date[$i]),
   $start_date[$i], $end_date[$i]);

The second parameter according to the doc should be a text label; you're  
passing it an array.  That may be causing problems.  But since you are  
getting a chart with hardcoded data, it should be OK.

I'd recommend echoing all of your parameters to the screen to see if  
they are really what you expect.

Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.

Re: Creating Gantt Chart in PHP

Thanks Jerry,

Thanks a lot for helping I am able to solve it. Actually the problem is
that I have not inserted data in database I thought that first of all
it will show me the blank graph and after entering data it will show
the gantt charts accordingly but I was wrong I need to insert data in
the database so finally I am able to solve it. Thanks again for
cooperating me a lot.

Kuna. :)

Site Timeline