Hola.
Estoy creando una grafica de barras con la librería pchart, y cuando trato de ejecutar el codigo obtengo el error:
Código:
Warning: Division by zero
Lo que hago es llenar un array con datos de un xml externo:
Código:
$i=0;
$dataRow = Array();
$xml=simplexml_load_file("p.xml");
foreach($xml->dato as $dato){
$dataRow[$i]['studentName']= $dato->anio;;
$dataRow[$i]['studentMarks']= $dato->totventa;
$i++;
}
El array se llena correctamente, pero en el navegador, me lanza el error antes mensionado.... pero si en lugar de llenar el array $dataRow con datos externos, lo lleno en el mismisimo archivo php, el error desaparece y la grafica se muestra correctamente.
Asi funciona:
Código:
$dataRow = Array();
$dataRow[0]['studentName']= "hola";
$dataRow[0]['studentMarks']= 52;
$dataRow[1]['studentName']= "hola";
$dataRow[1]['studentMarks']= 20;
$dataRow[2]['studentName']= "Joseph";
$dataRow[2]['studentMarks']= 35;
$dataRow[3]['studentName']= "Deepak";
$dataRow[3]['studentMarks']= 26;
$dataRow[4]['studentName']= "Martin";
$dataRow[4]['studentMarks']= 37;
$dataRow[5]['studentName']= "Vijay";
$dataRow[5]['studentMarks']= 19;
Pero necesito que cargue el xml, y no datos estaticos.... el codigo completo:
Código PHP:
//-- incluyo las clases para las graficas
include("pchart/pData.class");
include("pchart/pChart.class");
$i=0;
$dataRow = Array();
$xml=simplexml_load_file("p.xml");
foreach($xml->dato as $dato){
$dataRow[$i]['studentName']= $dato->anio;;
$dataRow[$i]['studentMarks']= $dato->totventa;
$i++;
}
// Dataset definition
$DataSet = new pData;
for ($i=0; $i<count($dataRow); $i++) {
$dispStudName = $dataRow[$i]['studentName'];
$dispStudMarks = $dataRow[$i]['studentMarks'];
$DataSet->AddPoint($dispStudName,"Names");
$DataSet->AddPoint($dispStudMarks,"Marks");
}
$DataSet->AddAllSeries();
$DataSet->RemoveSerie("Names");
$DataSet->SetAbsciseLabelSerie("Names");
$DataSet->SetSerieName("Marks","Marks");
$DataSet->SetYAxisName("Marks");
// Initialise the graph
$Test = new pChart(700,230);
$Test->setFontProperties("fuentes/tahoma.ttf",8);
$Test->setGraphArea(50,30,680,200);
$Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);
$Test->drawRoundedRectangle(5,5,695,225,5,230,230,230);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE);
$Test->drawGrid(4,TRUE,230,230,230,50);
// Draw the bar graph
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE);
// Finish the graph
$Test->setFontProperties("fuentes/tahoma.ttf",8);
$Test->drawLegend(596,150,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties("fuentes/tahoma.ttf",10);
$Test->drawTitle(50,22,"Example 12",50,50,50,585);
$Test->Render("graficas/barra1.png")
Gracias!