2013-05-07 1 views
1

하나의 웹 페이지에 여러 차트를 작성해야하며 각 차트의 데이터는 하나의 MySql 데이터베이스에서 가져온 것이지만 다른 테이블에서 가져온 것입니다. 동일한 웹 페이지에 여러 차트를 표시해야합니다. 현재 내가융합 차트에서 하나의 웹 페이지에 여러 차트 제공

내가

을 다음과 같이

<?php 
include("Includes/FusionCharts.php"); 
include("Includes/DBConn.php"); 
?> 
<HTML> 
<HEAD> 
<TITLE> 
FusionCharts Free - Database Example 
</TITLE> 
<?php 
?> 
<SCRIPT LANGUAGE="Javascript" SRC="FusionCharts/FusionCharts.js"></SCRIPT> 
<style type="text/css"> 
<!-- 
body { 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 12px; 
} 
.text{ 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 12px; 
} 
--> 
</style> 
</HEAD> 
<BODY> 

<table width="402" border="3" cellpadding="0"> 
<tr> 
<td width="390" height="63" align="left"><?php 

$link = connectToDB(); 

    $strXML = "<graph caption='Factory Output report' subCaption='By Quantity' pieSliceDepth='30' showBorder='1' showNames='1' formatNumberScale='0' numberSuffix=' Units' decimalPrecision='0'>"; 


$strQuery = "select * from top_buy_traders"; 
$result = mysql_query($strQuery) or die(mysql_error()); 


if ($result) { 
    while($ors = mysql_fetch_array($result)) { 

     $strQuery = "select sum(qty) as TotOutput from top_buy_traders where id=" . $ors['id']; 
     $result2 = mysql_query($strQuery) or die(mysql_error()); 
     $ors2 = mysql_fetch_array($result2); 
     //Generate <set name='..' value='..' />   
     $strXML .= "<set name='" . $ors['buy_trader'] . "' value='" . $ors2['TotOutput'] . "' />"; 
     //free the resultset 
     mysql_free_result($result2); 
    } 
} 
mysql_close($link); 

//Finally, close <graph> element 
$strXML .= "</graph>"; 

//Create the chart - Pie 3D Chart with data from $strXML 
echo renderChart("FusionCharts/FCF_Pie3D.swf", "", $strXML, "FactorySum", 325, 225); 
    ?></td> 

    </tr> 
</table> 
</BODY> 
</HTML> 

퓨전 Chart.php이 차트를 표시합니다 차트 도구

페이지로 융합 차트를 사용하고이 목적을 위해 다음과 같은 코드를 사용하고 있습니다

<?php 
function connectToDB() { 



    $hostdb = 'localhost'; // MySQl host 
    $userdb = 'root'; // MySQL username 
    $passdb = ''; // MySQL password 
    $namedb = 'phptest'; // MySQL database name 


    $link = mysql_connect ("localhost:3306", "root", ""); 

    if (!$link) { 
    die('Could not connect: ' . mysql_error()); } 



    $db_selected = mysql_select_db($namedb); 
    if (!$db_selected) { 
    die ('Can\'t use database : ' . mysql_error()); 
    } 
    return $link; 
    } 
?> 

















    function renderChartHTML($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight, $debugMode=false,$registerWithJS=false, $setTransparent="") { 
    $strFlashVars = "&chartWidth=" . $chartWidth . "&chartHeight=" . $chartHeight . "&debugMode=" . boolToNum($debugMode); 
if ($strXML=="") 

    $strFlashVars .= "&dataURL=" . $strURL; 
else 

    $strFlashVars .= "&dataXML=" . $strXML; 

    $nregisterWithJS = boolToNum($registerWithJS); 
    if($setTransparent!=""){ 
    $nsetTransparent=($setTransparent==false?"opaque":"transparent"); 
    }else{ 
    $nsetTransparent="window"; 
    } 
$HTML_chart = <<<HTMLCHART 
<!-- START Code Block for Chart $chartId --> 
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="$chartWidth" height="$chartHeight" id="$chartId"> 
    <param name="allowScriptAccess" value="always" /> 
    <param name="movie" value="$chartSWF"/>  
    <param name="FlashVars" value="$strFlashVars&registerWithJS=$nregisterWithJS" /> 
    <param name="quality" value="high" /> 
    <param name="wmode" value="$nsetTransparent" /> 
    <embed src="$chartSWF" FlashVars="$strFlashVars&registerWithJS=$nregisterWithJS" quality="high" width="$chartWidth" height="$chartHeight" name="$chartId" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="$nsetTransparent" /> 


</object> 
<!-- END Code Block for Chart $chartId --> 
HTMLCHART; 

return $HTML_chart; 
} 

function boolToNum($bVal) { 
return (($bVal==true) ? 1 : 0); 
} 

?> 
012,351,641 다음과 같이
<?php 

function encodeDataURL($strDataURL, $addNoCacheStr=false) { 

if ($addNoCacheStr==true) { 
     if (strpos($strDataURL,"?")<>0) 
     $strDataURL .= "&FCCurrTime=" . Date("H_i_s"); 
    else 
     $strDataURL .= "?FCCurrTime=" . Date("H_i_s"); 
} 
return urlencode($strDataURL); 
} 


function datePart($mask, $dateTimeStr) { 
@list($datePt, $timePt) = explode(" ", $dateTimeStr); 
$arDatePt = explode("-", $datePt); 
$dataStr = ""; 
    if (count($arDatePt) == 3) { 
    list($year, $month, $day) = $arDatePt; 

    switch ($mask) { 
    case "m": return $month; 
    case "d": return $day; 
    case "y": return $year; 
    } 

    return (trim($month . "/" . $day . "/" . $year)); 
} 
return $dataStr; 
} 


function renderChart($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight, $debugMode=false, $registerWithJS=false, $setTransparent="") { 
//First we create a new DIV for each chart. We specify the name of DIV as "chartId"Div.   

if ($strXML=="") 
    $tempData = "//Set the dataURL of the chart\n\t\tchart_$chartId.setDataURL(\"$strURL\")"; 
else 
    $tempData = "//Provide entire XML data using dataXML method\n\t\tchart_$chartId.setDataXML(\"$strXML\")"; 

// Set up necessary variables for the RENDERCAHRT 
$chartIdDiv = $chartId . "Div"; 
$ndebugMode = boolToNum($debugMode); 
$nregisterWithJS = boolToNum($registerWithJS); 
$nsetTransparent=($setTransparent?"true":"false"); 



$render_chart = <<<RENDERCHART 

<!-- START Script Block for Chart $chartId --> 
<div id="$chartIdDiv" align="center"> 
    Chart. 
</div> 
<script type="text/javascript"> 
    //Instantiate the Chart 
    var chart_$chartId = new FusionCharts("$chartSWF", "$chartId", "$chartWidth", "$chartHeight", "$ndebugMode", "$nregisterWithJS"); 
    chart_$chartId.setTransparent("$nsetTransparent"); 

    $tempData 

    chart_$chartId.render("$chartIdDiv"); 
</script> 
<!-- END Script Block for Chart $chartId --> 
RENDERCHART; 

    return $render_chart; 
} 

DBConn.php은

+0

당신이 정교한 수 있습니까? 하나의 차트 만 렌더링되는 것입니까? –

답변

0

각 차트에는 다른 ID와 DIV ID가 지정되어 있어야합니다. 아래 줄에서 FactorySum이 차트 ID이므로 각 차트에 대해 변경하십시오.

echo renderChart("FusionCharts/FCF_Pie3D.swf", "", $strXML, "FactorySum", 325, 225); 
+0

샘플을 보여 주시겠습니까? 조금 혼란 스럽습니다. – user1793864

0

renderChart() function으로 전화하여 원하는만큼 차트를 만들어야합니다. 주의해야 할 것은 각 차트에 고유 한 차트 ID를 설정해야한다는 것입니다.

Ref.Code : 아래

echo renderChart("FusionCharts/FCF_Pie3D.swf", "", $strXML, "**FactorySum**", 
325, 225); 
echo renderChart("FusionCharts/FCF_Pie3D.swf", "", $strXML, "**FactorySum_1**", 
325,225); 
0

는 솔루션입니다.

$ ganttChart = new FusionCharts ("bar2d", "ex2", "50 %", "300", "chart-1", "json", $ jsonData);

$ ganttChart-> render();

제 2 파라미터, 즉 "ex2". 모든 차트에 대해이 ID를 고유해야합니다.

여러 차트가로드됩니다.

덕분에,

제공 : Anirudh 수드

당신이 직면하고 무엇을 오류로
관련 문제