Здравствуйте!
Есть такая задача: нужно перерисовывать график на php странице сайта без перезагрузки самой страницы.
Пытаюсь реализовать это с помощью ajax/jquery вот так:
Код:
function chartBuild()
{
dateStart = document.getElementById("example").value;
dateEnd = document.getElementById("example1").value;
$.ajax({
url: "./functions/Ajax.php",
cache: false,
type: "POST",
data: "StartDate=" + dateStart + "&EndDate=" + dateEnd,
success: function(){
alert('Builded');
}
});
}
Вот код файла Ajax.php:
PHP код:
include_once('functions.php');
if(isset($_REQUEST[StartDate])){$StartDate = $_REQUEST[StartDate];}else{$StartDate = "";}
if(isset($_REQUEST[EndDate])){$EndDate = $_REQUEST[EndDate];}else{$EndDate = "";}
$name = date("Y_m_d_H_i_s");
sloccount($StartDate,$EndDate,$name);
Вот код функции sloccount() которая рисует график:
PHP код:
function sloccount($StartDate,$EndDate,$name) {
$dir = "./png";
removeDirRec($dir);
// Standard inclusions
include("./pChart/pData.class");
include("./pChart/pChart.class");
// Dataset definition
$DataSet = new pData;
$series = array();
$maxitems = 19;
$date = date ('Y-m-d', strtotime ("$StartDate-1 days"));
$result=mysql_query("SELECT sloc FROM sloccount WHERE date='$date'") or die ("1Query to SLOCCount is incorrect!");
$row = mysql_fetch_array($result);
if($row['sloc']<>null){
$prewsloc = $row['sloc'];
}else{
$prewsloc=0;
}
mysql_free_result($result);
$result=mysql_query("SELECT date, sloc FROM sloccount WHERE date>='$StartDate' and date<='$EndDate'") or die ("2Query to SLOCCount is incorrect!");
while ($row = mysql_fetch_array($result)) {
$dateforprewresult = date ('Y-m-d', strtotime ($row['date']."-".$maxitems." days"));
$prewresult=mysql_query("SELECT sum(sloc)/".$maxitems." FROM sloccount WHERE date>='$dateforprewresult' and date<='".$row['date']."'") or die ("3Query to SLOCCount is incorrect!");
$sum = mysql_fetch_array($prewresult);
$series[0][] = $row['date'];
$series["SLOCcount"][] = $row['sloc'];
$series["Moving average"][] = $sum['sum(sloc)/'.$maxitems];
$prewsloc=$row['sloc'];
mysql_free_result($prewresult);
}
mysql_free_result($result);
$n = 0;
foreach($series as $k => $v) {
if(++$n == 1) {
$keySerie = "$k";
$ksSize = count($v);
}
$DataSet->AddPoint($v, "$k");
}
$DataSet->AddAllSeries();
$DataSet->RemoveSerie($keySerie);
$DataSet->SetAbsciseLabelSerie($keySerie);
// Initialise the graph
$Test = new pChart(720,285);
$Test->setFontProperties("./tahoma.ttf",10);
$Test->setGraphArea(40,30,680,200);
$Test->drawGraphArea(252,252,252); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,90,2);
$Test->drawGrid(4,TRUE,230,230,230,255);
// Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255);
// Finish the graph
$Test->setFontProperties("./tahoma.ttf",8);
$Test->drawLegend(45,35,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties("./tahoma.ttf",10);
$Test->drawTitle(60,22,"SLOCCount with Moving average",50,50,50,585);
$Test->Render("./png/".$name.".png");
}
Но увы ничего не работает
В чем тут может быть проблема?
Функция sloccount - точно работает, проверено.
Такое впечатление, что у скрипта который вызывает мой ajax запрос просто нет прав на работу с файлами.
Заранее спасибо за помощь!