在循环中创建更多图表时出错 - php

发布于 2024-12-04 09:55:08 字数 3055 浏览 0 评论 0原文

我正在尝试创建基于国家/地区的图表。我为此使用 pchart,因为它默认会创建图表作为图像。

我创建了一个创建条形图的函数。我选择国家及其统计数据并将其传递给条形图函数,该函数将图表创建为平面文件。

当我传递一个国家统计数据时,它正在创建图表。问题是,当我尝试发布多个国家/地区时,它只会创建一个国家/地区的形象,仅此而已。我不知道问题出在哪里?帮助表示赞赏。

示例代码在这里:

<?php
$con=mysql_connect("localhost","root","");
$ln=mysql_select_db("conif_new",$con);
$qry="select country from chart group by country limit 2";
$cnlist=mysql_query($qry);
while($row=mysql_fetch_row($cnlist)){
    $cn=$row[0];
    $nqry="select server,count(*) from  chart where country='$cn' group by server";
    $dset=mysql_query($nqry);
    $x="";
    $xt="";
    while($crow=mysql_fetch_row($dset)){    
        $x.=$crow[1].",";
        $xt.=$crow[0].",";
    }
    $x=substr($x,0,strlen($x)-1);
    $xt=substr($xt,0,strlen($xt)-1);
    //echo "$x**$xt<br>";
    if(barChart($x,$xt,$cn)){}


}

function barChart($x,$xt,$name){
    $x=explode(",",$x);
    $xt=explode(",",$xt);
    /* CAT:Bar Chart */ 

    /* pChart library inclusions */ 
    include("class/pData.class.php"); 
    include("class/pDraw.class.php"); 
    include("class/pImage.class.php"); 

    /* Create and populate the pData object */ 
    $MyData = new pData();   
    $MyData->addPoints($x,"Server A"); 
    $MyData->setAxisName(0,"Hits"); 
    $MyData->addPoints($xt,"Months"); 
    $MyData->setSerieDescription("Months","Month"); 
    $MyData->setAbscissa("Months"); 

    /* Create the pChart object */ 
    $myPicture = new pImage(700,230,$MyData); 
    $myPicture->drawGradientArea(0,0,700,230,DIRECTION_VERTICAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,
    "EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>100)); 
    $myPicture->drawGradientArea(0,0,700,230,DIRECTION_HORIZONTAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,
    "EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>20)); 
    $myPicture->setFontProperties(array("FontName"=>"fonts/verdana.ttf","FontSize"=>9)); 

    /* Draw the scale  */ 
    $myPicture->setGraphArea(50,30,680,200); 
    $myPicture->drawScale(array("CycleBackground"=>TRUE,"DrawSubTicks"=>TRUE,"GridR"=>0,"GridG"=>0,"GridB"=>0,  
    "GridAlpha"=>10)); 

    /* Turn on shadow computing */  
    $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); 

    /* Draw the chart */ 
    $settings = array("Gradient"=>TRUE,"DisplayPos"=>LABEL_POS_INSIDE,"DisplayValues"=>TRUE,"DisplayR"=>255,
    "DisplayG"=>255,"DisplayB"=>255,"DisplayShadow"=>TRUE,"Surrounding"=>10);
    $myPicture->drawBarChart($settings); 

    /* Write the chart legend */ 
    $myPicture->drawLegend(580,12,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL)); 

    /* Render the picture (choose the best way) */ 
    //$myPicture->autoOutput("pictures/example.drawBarChart.shaded.png");

    if($myPicture->render("C:/wamp/www/chart/".$name.".png"))
        echo "true";
    else
        echo "false"; 
}
?>

I'm trying to create country based charts. i'm using pchart for this, because it will create charts as image by default.

I've created a function which creates barchart. I'm selecting countries and its stats and passing it to the barchart function which creates a chart as a flat file.

When i pass a single a country stats it is creating chart. the problem is when i try to post more than one country, it is creating only one country image not more than that. i don't know where the issue exists? Help appreciated.

sample code is here:

<?php
$con=mysql_connect("localhost","root","");
$ln=mysql_select_db("conif_new",$con);
$qry="select country from chart group by country limit 2";
$cnlist=mysql_query($qry);
while($row=mysql_fetch_row($cnlist)){
    $cn=$row[0];
    $nqry="select server,count(*) from  chart where country='$cn' group by server";
    $dset=mysql_query($nqry);
    $x="";
    $xt="";
    while($crow=mysql_fetch_row($dset)){    
        $x.=$crow[1].",";
        $xt.=$crow[0].",";
    }
    $x=substr($x,0,strlen($x)-1);
    $xt=substr($xt,0,strlen($xt)-1);
    //echo "$x**$xt<br>";
    if(barChart($x,$xt,$cn)){}


}

function barChart($x,$xt,$name){
    $x=explode(",",$x);
    $xt=explode(",",$xt);
    /* CAT:Bar Chart */ 

    /* pChart library inclusions */ 
    include("class/pData.class.php"); 
    include("class/pDraw.class.php"); 
    include("class/pImage.class.php"); 

    /* Create and populate the pData object */ 
    $MyData = new pData();   
    $MyData->addPoints($x,"Server A"); 
    $MyData->setAxisName(0,"Hits"); 
    $MyData->addPoints($xt,"Months"); 
    $MyData->setSerieDescription("Months","Month"); 
    $MyData->setAbscissa("Months"); 

    /* Create the pChart object */ 
    $myPicture = new pImage(700,230,$MyData); 
    $myPicture->drawGradientArea(0,0,700,230,DIRECTION_VERTICAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,
    "EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>100)); 
    $myPicture->drawGradientArea(0,0,700,230,DIRECTION_HORIZONTAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,
    "EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>20)); 
    $myPicture->setFontProperties(array("FontName"=>"fonts/verdana.ttf","FontSize"=>9)); 

    /* Draw the scale  */ 
    $myPicture->setGraphArea(50,30,680,200); 
    $myPicture->drawScale(array("CycleBackground"=>TRUE,"DrawSubTicks"=>TRUE,"GridR"=>0,"GridG"=>0,"GridB"=>0,  
    "GridAlpha"=>10)); 

    /* Turn on shadow computing */  
    $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); 

    /* Draw the chart */ 
    $settings = array("Gradient"=>TRUE,"DisplayPos"=>LABEL_POS_INSIDE,"DisplayValues"=>TRUE,"DisplayR"=>255,
    "DisplayG"=>255,"DisplayB"=>255,"DisplayShadow"=>TRUE,"Surrounding"=>10);
    $myPicture->drawBarChart($settings); 

    /* Write the chart legend */ 
    $myPicture->drawLegend(580,12,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL)); 

    /* Render the picture (choose the best way) */ 
    //$myPicture->autoOutput("pictures/example.drawBarChart.shaded.png");

    if($myPicture->render("C:/wamp/www/chart/".$name.".png"))
        echo "true";
    else
        echo "false"; 
}
?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半寸时光 2024-12-11 09:55:08

我找到了一个答案!!!,刚刚注意到“ 包括语句”内部的barchart功能。删除了它,那就是它!

我应该放置“ include_once”而不是“ include”或应该移动“ inclage”语句以使其正常工作。

I found an answer!!!, just noticed "include statements" inside barchart function. Removed it, Thats it!

I should've placed "include_once" instead of "include" or should've moved the "include" statements outside the function to make it work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文