来自自定义mysqli查询的Google Pie图表

我试图使用php,mysqli实现谷歌图表。 我想制作一个饼图,其中3个切片用于课程活动,3个片段是三个列:计数( 60%)。 我尝试使用不同的程序进行搜索,尝试从我的不同可能性,但无法满足这种要求。 我无法在代码中添加两个以上的列。

要求:我正在寻找带有lesson_activity的饼图,显示所有三列:cond1,cond2和cond3(在一个饼图中)。

我来堆栈溢出,与高素质的开发人员分享我的代码。

请分享您的建议。

表:lesson_grades

id lesson lesson_activity count(60%) 5 Community Health Care CHC.001 9 7 2 5 Community Health Care CHC.002 2 5 6 5 Community Health Care CHC.003 9 2 0 13 Spaceship SS.001 1 13 7 3 Risk Analysis RA.001 1 13 7 3 Risk Analysis RA.002 1 9 0 3 Risk Analysis RA.003 1 3 4 3 Risk Analysis RA.004 0 7 21 3 Risk Analysis RA.005 0 30 11 15 Community Qualifications CA.001 1 13 32 

 query('SELECT id, lesson, lesson_activity, count(60%) AS cond3 FROM lesson_grades'); $rows = array(); $flag = true; $table = array(); $table['cols'] = array( array('label' => 'lesson_activity', 'type' => 'string'), array('label' => 'cond1', 'type' => 'number'), array('label' => 'cond2', 'type' => 'number'), array('label' => 'cond3', 'type' => 'number'), ); $rows = array(); while($r = mysqli_fetch_assoc($sql)) { $temp = array(); $temp[] = array('v' => (string) $r['lesson_activity']); $temp[] = array('v' => $r['cond1'], $r['cond2'], $r['cond3']); $rows[] = array('c' => $temp); } $table['rows'] = $rows; $jsonTable = json_encode($table); echo $jsonTable; ?>      google.load('visualization', '1', {'packages':['corechart']}); google.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); var options = { title: 'My Weekly Plan', legend: 'none', slices: {0: {color: 'black'}, 1: {color: 'red'}} }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); }   

我相信有人会给你一个纯粹的javascript版本,但这里有一个与php一起工作的类,如果你感兴趣的话会自动生成javascript。 如果不是最底层的代码是尝试的输出:

图书馆:

更新: https //github.com/rasclatt/PHP-to-Google-PieCharts-Converter

 options = array("title"=>"Untitled"); $this->chartType = 'pie'; } function CreatePie($settings = false) { if(!is_array($settings)) return; $data = (!empty($settings['data']))? $settings['data']:false; $this->id = (!empty($settings['id']))? $settings['id']:false; $incr = (!empty($settings['incr']))? $settings['incr']:false; $this->VarName = ""; $this->newArr = array(); if($data != false && $this->id != false) { foreach($data as $key => $value) { $dvalue = (is_numeric($value))? $value:"'{$value}'"; $key = (is_numeric($key))? $key:"'{$key}'"; $this->newArr[] = "\t\t\t\t\t[{$key}, {$dvalue}]"; } } $this->VarName = "DataSet{$incr}"; if(!empty($this->newArr)) { $str = PHP_EOL."var {$this->VarName} = [".PHP_EOL; $str .= implode(",".PHP_EOL,$this->newArr).PHP_EOL; $str .= "\t\t\t\t]".PHP_EOL; } $this->DataArray = (!empty($str))? $str:false; return $this; } public function ChartData() { $str = (!empty($this->DataArray))? $this->DataArray:""; $str .= PHP_EOL; return $str; } protected function MakeJSObjects($arr) { if(is_array($arr)) { foreach($arr as $k => $v) { $return[$k] = $k.': '.$this->MakeJSObjects($v); } } else { $arr = (is_numeric($arr) || $arr === 'true' || $arr === 'false')? $arr: "'$arr'"; $return = (strpos($arr,'{') !== false && strpos($arr,'}') !== false)? trim($arr,"'") : $arr; } return (is_array($return))? '{ '.PHP_EOL."\t".implode(",\t".PHP_EOL."\t",$return).PHP_EOL.' }' : $return; } public function ChartOptions($opts) { if(!is_array($opts)) return $this; $this->options = "\t\tvar options =".$this->MakeJSObjects($opts).";"; return $this; } public function ChartInstance() { $str = (!empty($this->VarName))? "drawChart({$this->VarName},'{$this->id}');":""; $str .= PHP_EOL; return $str; } public function CreateJavascript($settings = false) { $library = (!empty($settings['lib']))? $settings['lib']:false; $wrap = (!empty($settings['wrap']))? $settings['wrap']:false; $wrap = (!empty($settings['data']) && is_array($settings['data']))? $settings['data']:array(); if($library) $comp[] = ''.PHP_EOL; if($wrap) $comp[] = ''.PHP_EOL; return implode("",$comp); } public function ChartKind($type = 'pie') { switch($type) { case('scatter'): $this->chartType = 'ScatterChart'; break; default: $this->chartType = 'PieChart'; } return $this; } } ?> 

使用:

   60%)'] = 6; //**********************************// //**********************************// // Create instance of GoogleCharts class $Googlizer = new GoogleCharts(); // Create the pie chart $Googlizer->CreatePie($settings); // Save the instance of the js data array $chart1_data = $Googlizer->ChartData(); // Save the instance of the js function $chart1_inst = $Googlizer->ChartInstance(); // Write the whole shebangle to the page echo $Googlizer ->ChartOptions(array("title"=>"My Weekly Plan","legend"=>"none")) ->ChartKind(GoogleCharts::PIE) ->CreateJavascript(array("data"=>array($chart1_data, $chart1_inst),"wrap"=>true,"lib"=>true)); ?>   

给你: