ตัวอย่างการสร้างกราฟวงกลม ( pie chart) บนหน้าเว็บ ด้วย PHP MySQL และ Javascript
เราสามารถแสดงหน้ารายงานโดยอ่านข้อมูลออกมาจากฐานข้อมูล mysql ออกมาแสดงเป็นกราฟวงกลมได้ดังนี้
Link ที่เกี่ยวข้อง สร้างกราฟแท่งด้วย javascript ( โดยใช้ chartjs และดึงข้อมูลมาจาก Firebase database )
Link ที่เกี่ยวข้อง สร้างกราฟแท่งด้วย ChartJs.org ตอน 2 ( สร้างกราฟแบบ DataSet เดียว )
รับเขียนโปรแกรม PHP MySQL Javascript
1. สร้างไฟล์ get_data.php สำหรับอ่านข้อมูลจาก MySQL
<?php
/*กำหนด username password และ database name ของ mysql */
$servername = "localhost";
$username = "...";
$password = "...";
$dbname = "...";
/*------เชื่อมต่อ Database----*/
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection Error: " . $conn->connect_error);
}
/*------ถ้ายังไม่มีตาราง ให้สร้างตาราง ชื่อ food----*/
$sql = "CREATE TABLE IF NOT EXISTS population (
country VARCHAR(100),
population INT(8)
)";
$conn->query($sql);
$sql = "SELECT * FROM population";
$result = $conn->query($sql);
if ($result->num_rows == 0)
{
/*----ถ้ายังไม่มีข้อมูลในตาราง population ให้เพิ่มข้อมูลเข้าไป----*/
$sql = "INSERT INTO population (country, population)
VALUES ('China', '1448178826')";
$conn->query($sql);
$sql = "INSERT INTO population (country, population)
VALUES ('India', '1401891297')";
$conn->query($sql);
$sql = "INSERT INTO population (country, population)
VALUES ('U.S.A.', '334107942')";
$conn->query($sql);
$sql = "INSERT INTO population (country, population)
VALUES ('Indonesia', '278196711')";
$conn->query($sql);
$sql = "INSERT INTO population (country, population)
VALUES ('Pakistan', '227952794')";
$conn->query($sql);
}
//อ่านข้อมูล Popuplation จาก Database
$sql = "SELECT * FROM population";
$result = $conn->query($sql);
//ส่งออกข้อมูลกลับไปที่ web browser ในรูปแบบ JSON
$rows = array();
while($r = mysqli_fetch_assoc($result)) {
$rows[] = $r;
}
echo json_encode($rows);
?>
2.สร้างไฟล์ index.html สำหรับ แสดงกราฟวงกลม
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<title>ตัวอย่างกราฟวงกลม</title>
<!-- import javascript สร้าง pie chart และ axios เพื่อดึงข้อมูลจาก MySQL แบบ ajax -->
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
<!-- สร้าง div สำหรับแสดงกราฟ -->
<div id="piechart"></div>
<script type="text/javascript" >
//ดึงข้อมูลแบบ ajax โดยเรียกไฟล์ get_data.php
axios.get("get_data.php").then(response=>{
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(function(){
//เก็บข้อมูล JSON ที่ส่งจากไฟล์ get_data.php ไว้ในตัวแปร data_from_mysql
var data_from_mysql=response.data;
var data=[];//สร้างตัวแปรสำหรับข้อมูลที่จะไปแสดงในกราฟ
data.push(['Country', 'Popupulation']);
//เพิม Country และ Population ที่ได้จาก MySQL เข้าไปใน data
data_from_mysql.map(item=>{
data.push([item.country,parseInt(item.population)]);
});
// กำหนดชื่อกราฟ ความกว่าง และความยาว
var options = {
'title':'World Population',
'width':650,
'height':400,
sliceVisibilityThreshold:.00001
};
// สร้างกราฟในtag <div> ที่มี id เป็น "piechart"
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(google.visualization.arrayToDataTable(data), options);
});
});
</script>
</body>
</html>
ผลลัพธ์ที่ได้คือ