使用Highcharts结合PHP与Mysql生成饼状图
http://www.helloweba.com/view-blog-159.html 本文将结合实际,使用PHP读取Mysql数据表中的数据,并将获取的数据按照要求输出给前端JS,再通过配置调用Highcharts图表库生成饼状图。 1、准备 为了更好的讲解,实例中在Mysql数据库中建立一张表chart_pie,用
http://www.helloweba.com/view-blog-159.html
本文将结合实际,使用PHP读取Mysql数据表中的数据,并将获取的数据按照要求输出给前端JS,再通过配置调用Highcharts图表库生成饼状图。
1、准备
为了更好的讲解,实例中在Mysql数据库中建立一张表chart_pie,用于表示各搜索引擎带来的访问量,表中分别有id、title和pv三个字段,id是自增长整型、主键;title表示搜素引擎的名称,pv表示对应的访问量。chart_pie表中已预置了相关数据,如图:
2、PHP
在pie.php文件中,写入如下代码:
<code> <br><span>include_once</span>(<span>'connect.php'</span>); <span>//连接数据库</span> <br><span>$</span><span>res</span> = mysql_query(<span>"select * from chart_pie"</span>); <br><span>while</span>(<span>$</span><span>row</span> = mysql_fetch_array(<span>$</span><span>res</span>)){ <br> <span>$</span><span>arr</span>[] = <span>array</span>( <br> <span>$</span><span>row</span>[<span>'title'</span>],intval(<span>$</span><span>row</span>[<span>'pv'</span>]) <br> ); <br>} <br><span>$</span><span>data</span> = json_encode(<span>$</span><span>arr</span>); <br></code>
代码中使用原生的PHP查询mysq数据的方法,将查询的结果集保存在一个数组$arr里,并将该数组转换 以备前端js调用。
3、Javascript
通过配置Highcharts,可以生成一个漂亮的饼状图,详见代码及注释,如果你还不知道Highcharts是什么东东,请查阅本站(helloweba.com
<code> <br><span>var</span> chart; <br>$(<span>function</span>() <span>{</span> <br> chart = <span>new</span> Highcharts.Chart(<span>{</span> <br> chart: <span>{</span> <br> renderTo: <span>'chart_pie'</span>, <span>//饼状图关联html元素id值</span> <br> defaultSeriesType: <span>'pie'</span>, <span>//默认图表类型为饼状图</span> <br> plotBackgroundColor: <span>'#ffc'</span>, <span>//设置图表区背景色</span> <br> plotShadow: true <span>//设置阴影</span> <br> <span>}</span>, <br> title: <span>{</span> <br> text: <span>'搜索引擎统计分析'</span> <span>//图表标题</span> <br> <span>}</span>, <br> credits: <span>{</span> <br> text: <span>'helloweba.com'</span> <br> <span>}</span>, <br> tooltip: <span>{</span> <br> formatter: <span>function</span>() <span>{</span> <span>//鼠标滑向图像提示框的格式化提示信息</span> <br> <span>return</span> <span>'<b>'</b></span> + <span>this</span>.point.name + <span>': '</span> + <br> twoDecimal(<span>this</span>.percentage) + <span>' %'</span>; <br> <span>}</span> <br> <span>}</span>, <br> plotOptions: <span>{</span> <br> pie: <span>{</span> <br> allowPointSelect: true, <span>//允许选中,点击选中的扇形区可以分离出来显示</span> <br> cursor: <span>'pointer'</span>, <span>//当鼠标指向扇形区时变为手型(可点击)</span> <br> <span>//showInLegend: true, //如果要显示图例,可将该项设置为true</span> <br> dataLabels: <span>{</span> <br> enabled: true, <br> color: <span>'#000000'</span>, <span>//数据显示颜色</span> <br> connectorColor: <span>'#999'</span>, <span>//设置数据域扇形区的连接线的颜色</span> <br> style:<span>{</span> <br> fontSize: <span>'12px'</span> <span>//数据显示的大小</span> <br> <span>}</span>, <br> formatter: <span>function</span>() <span>{</span> <span>//格式化数据</span> <br> <span>return</span> <span>'<b>'</b></span> + <span>this</span>.point.name + <span>': '</span> + <br> twoDecimal(<span>this</span>.percentage) + <span>' %'</span>; <br> <span>}</span> <br> <span>}</span> <br> <span>}</span> <br> <span>}</span>, <br> series: [<span>{</span> <span>//数据列</span> <br> name: <span>'search engine'</span>, <br> data: <?php echo $data;?> <span>//核心数据列来源于php读取的数据并解析成JSON</span> <br> <span>}</span>] <br> <span>}</span>); <br><span>}</span>); <br></code>
上述代码中,核心数据data来源于pie.php中php转换的json数据:$data。转换后输出的JSON数据格式为:
<code> <br>[[<span>"\u767e\u5ea6"</span>,<span>1239</span>],[<span>"google"</span>,<span>998</span>],[<span>"\u641c\u641c"</span>,<span>342</span>],[<span>"\u5fc5\u5e94"</span>,<span>421</span>], <br>[<span>"\u641c\u72d7"</span>,<span>259</span>],[<span>"\u5176\u4ed6"</span>,<span>83</span>]] <br></code>
不用担心,Highcharts会自动将JSON数据解析处理,并生成百分比的数据。
其实,Highcharts生成的饼状图还可以设置默认初始选中的扇形,即默认选中的扇形会从整圆形中分离出来,以便突出显示。该效果要求默认data格式为:
<code> <br>[<span>{</span><span>"name"</span>:<span>"\u767e\u5ea6"</span>,<span>"y"</span>:<span>1239</span>,<span>"sliced"</span>:true,<span>"selected"</span>:true<span>}</span>,[<span>"google"</span>,<span>998</span>], <br>[<span>"\u641c\u641c"</span>,<span>342</span>],[<span>"\u5fc5\u5e94"</span>,<span>421</span>],[<span>"\u641c\u72d7"</span>,<span>259</span>],[<span>"\u5176\u4ed6"</span>,<span>83</span>]] <br></code>
注意看代码中前部分:{"name":"\u767e\u5ea6","y":1239,"sliced":true,"selected":true},这个字符串如何用PHP得到呢?这就要修改pie.php中的php部分代码:
<code> <br><span>while</span>(<span>$</span><span>row</span> = mysql_fetch_array(<span>$</span><span>res</span>)){ <br> <span>if</span>(<span>$</span><span>row</span>[<span>'id'</span>]==<span>1</span>){ <br> <span>$</span><span>arr1</span>[] = <span>array</span>( <br> <span>"name"</span> => <span>$</span><span>row</span>[<span>'title'</span>], <br> <span>"y"</span> => intval(<span>$</span><span>row</span>[<span>'pv'</span>]), <br> <span>"sliced"</span> => <span>true</span>, <span>//默认分离</span> <br> <span>"selected"</span> => <span>true</span> <span>//默认选中</span> <br> ); <br> }<span>else</span>{ <br> <span>$</span><span>arr</span>[] = <span>array</span>( <br> <span>$</span><span>row</span>[<span>'title'</span>],intval(<span>$</span><span>row</span>[<span>'pv'</span>]) <br> ); <br> } <br>} <br><span>//合并数组</span> <br><span>$</span><span>arrs</span> = array_merge(<span>$</span><span>arr1</span>,<span>$</span><span>arr</span>); <br><span>$</span><span>data</span> = json_encode(<span>$</span><span>arrs</span>); <br></code>
我们在循环遍历结果集时,当id为1时,将该项设置为默认选中扇形区,构建数组$arr1,否则构建另一个数组$arr,然后将这两个数组合并,并将合并后的数组转换为json数据,供Highcharts调用。
此外,格式化数据市,如果要显示百分比,可使用this.percentage,Highcharts会自动将整数转换为百分数,如果要显示数据量,直接使用this.y。
使用百分比:
<code> <br>formatter: <span>function</span>() <span>{</span> <span>//格式化数据</span> <br> <span>return</span> <span>'<b>'</b></span> + <span>this</span>.point.name + <span>': '</span> + twoDecimal(<span>this</span>.percentage) + <span>' %'</span>; <br><span>}</span> <br></code>
使用实际数据:
<code> <br>formatter: <span>function</span>() <span>{</span> <span>//格式化数据</span> <br> <span>return</span> <span>'<b>'</b></span> + <span>this</span>.point.name + <span>': '</span> + <span>this</span>.y ; <br><span>}</span> </code>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。
