PHP MySQL Google Biểu đồ JSON - Ví dụ hoàn chỉnh


144

Tôi đã tìm kiếm rất nhiều để tìm một ví dụ hay để tạo Biểu đồ Google bằng cách sử dụng dữ liệu bảng MySQL làm nguồn dữ liệu. Tôi đã tìm kiếm một vài ngày và nhận ra rằng có một vài ví dụ có sẵn để tạo Biểu đồ Google (hình tròn, thanh, cột, bảng) bằng cách sử dụng kết hợp PHP và MySQL. Cuối cùng tôi đã có được một ví dụ làm việc.

Trước đây tôi đã nhận được rất nhiều sự giúp đỡ từ StackOverflow, vì vậy lần này tôi sẽ trả lại một số.

Tôi có hai ví dụ; một cái sử dụng Ajax và cái kia thì không. Hôm nay, tôi sẽ chỉ hiển thị ví dụ không phải Ajax.

Sử dụng:

    Yêu cầu: PHP, Apache và MySQL

    Cài đặt:

      --- Tạo cơ sở dữ liệu bằng cách sử dụng phpMyAdmin và đặt tên là "biểu đồ"
      --- Tạo bảng bằng cách sử dụng phpMyAdmin và đặt tên là "googlechart" và tạo 
          bảng chắc chắn chỉ có hai cột như tôi đã sử dụng hai cột. Tuy nhiên,
          bạn có thể sử dụng nhiều hơn 2 cột nếu muốn nhưng bạn phải thay đổi 
          mã một chút cho điều đó
      --- Chỉ định tên cột như sau: "Weekly_task" và "phần trăm"
      --- Chèn một số dữ liệu vào bảng
      --- Đối với cột tỷ lệ chỉ sử dụng một số

          ---------------------------------
          dữ liệu mẫu: Bảng (googlechart)
          ---------------------------------

          tỷ lệ phần trăm hàng tuần
          ----------- ----------
          Ngủ 30
          Xem phim 10
          công việc 40
          Bài tập 20    


Ví dụ về biểu đồ PHP-MySQL-JSON-Google:

    <?php
$con=mysql_connect("localhost","Username","Password") or die("Failed to connect with database!!!!");
mysql_select_db("Database Name", $con); 
// The Chart table contains two fields: weekly_task and percentage
// This example will display a pie chart. If you need other charts such as a Bar chart, you will need to modify the code a little to make it work with bar chart and other charts
$sth = mysql_query("SELECT * FROM chart");

/*
---------------------------
example data: Table (Chart)
--------------------------
weekly_task     percentage
Sleep           30
Watching Movie  40
work            44
*/

//flag is not needed
$flag = true;
$table = array();
$table['cols'] = array(

    // Labels for your chart, these represent the column titles
    // Note that one column is in "string" format and another one is in "number" format as pie chart only required "numbers" for calculating percentage and string will be used for column title
    array('label' => 'Weekly Task', 'type' => 'string'),
    array('label' => 'Percentage', 'type' => 'number')

);

$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $temp = array();
    // the following line will be used to slice the Pie chart
    $temp[] = array('v' => (string) $r['Weekly_task']); 

    // Values of each slice
    $temp[] = array('v' => (int) $r['percentage']); 
    $rows[] = array('c' => $temp);
}

$table['rows'] = $rows;
$jsonTable = json_encode($table);
//echo $jsonTable;
?>

<html>
  <head>
    <!--Load the Ajax API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">

    // Load the Visualization API and the piechart package.
    google.load('visualization', '1', {'packages':['corechart']});

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

    function drawChart() {

      // Create our data table out of JSON data loaded from server.
      var data = new google.visualization.DataTable(<?=$jsonTable?>);
      var options = {
           title: 'My Weekly Plan',
          is3D: 'true',
          width: 800,
          height: 600
        };
      // Instantiate and draw our chart, passing in some options.
      // Do not forget to check your div ID
      var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, options);
    }
    </script>
  </head>

  <body>
    <!--this is the div that will hold the pie chart-->
    <div id="chart_div"></div>
  </body>
</html>


Ví dụ về biểu đồ PHP-PDO-JSON-MySQL-Google:

<?php
    /*
    Script  : PHP-PDO-JSON-mysql-googlechart
    Author  : Enam Hossain
    version : 1.0

    */

    /*
    --------------------------------------------------------------------
    Usage:
    --------------------------------------------------------------------

    Requirements: PHP, Apache and MySQL

    Installation:

      --- Create a database by using phpMyAdmin and name it "chart"
      --- Create a table by using phpMyAdmin and name it "googlechart" and make sure table has only two columns as I have used two columns. However, you can use more than 2 columns if you like but you have to change the code a little bit for that
      --- Specify column names as follows: "weekly_task" and "percentage"
      --- Insert some data into the table
      --- For the percentage column only use a number

          ---------------------------------
          example data: Table (googlechart)
          ---------------------------------

          weekly_task     percentage
          -----------     ----------

          Sleep           30
          Watching Movie  10
          job             40
          Exercise        20     


    */

    /* Your Database Name */
    $dbname = 'chart';

    /* Your Database User Name and Passowrd */
    $username = 'root';
    $password = '123456';

    try {
      /* Establish the database connection */
      $conn = new PDO("mysql:host=localhost;dbname=$dbname", $username, $password);
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

      /* select all the weekly tasks from the table googlechart */
      $result = $conn->query('SELECT * FROM googlechart');

      /*
          ---------------------------
          example data: Table (googlechart)
          --------------------------
          weekly_task     percentage
          Sleep           30
          Watching Movie  10
          job             40
          Exercise        20       
      */



      $rows = array();
      $table = array();
      $table['cols'] = array(

        // Labels for your chart, these represent the column titles.
        /* 
            note that one column is in "string" format and another one is in "number" format 
            as pie chart only required "numbers" for calculating percentage 
            and string will be used for Slice title
        */

        array('label' => 'Weekly Task', 'type' => 'string'),
        array('label' => 'Percentage', 'type' => 'number')

    );
        /* Extract the information from $result */
        foreach($result as $r) {

          $temp = array();

          // the following line will be used to slice the Pie chart

          $temp[] = array('v' => (string) $r['weekly_task']); 

          // Values of each slice

          $temp[] = array('v' => (int) $r['percentage']); 
          $rows[] = array('c' => $temp);
        }

    $table['rows'] = $rows;

    // convert data into JSON format
    $jsonTable = json_encode($table);
    //echo $jsonTable;
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }

    ?>


    <html>
      <head>
        <!--Load the Ajax API-->
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <script type="text/javascript">

        // Load the Visualization API and the piechart package.
        google.load('visualization', '1', {'packages':['corechart']});

        // Set a callback to run when the Google Visualization API is loaded.
        google.setOnLoadCallback(drawChart);

        function drawChart() {

          // Create our data table out of JSON data loaded from server.
          var data = new google.visualization.DataTable(<?=$jsonTable?>);
          var options = {
               title: 'My Weekly Plan',
              is3D: 'true',
              width: 800,
              height: 600
            };
          // Instantiate and draw our chart, passing in some options.
          // Do not forget to check your div ID
          var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
          chart.draw(data, options);
        }
        </script>
      </head>

      <body>
        <!--this is the div that will hold the pie chart-->
        <div id="chart_div"></div>
      </body>
    </html>


Ví dụ về biểu đồ PHP-MySQLi-JSON-Google

<?php
/*
Script  : PHP-JSON-MySQLi-GoogleChart
Author  : Enam Hossain
version : 1.0

*/

/*
--------------------------------------------------------------------
Usage:
--------------------------------------------------------------------

Requirements: PHP, Apache and MySQL

Installation:

  --- Create a database by using phpMyAdmin and name it "chart"
  --- Create a table by using phpMyAdmin and name it "googlechart" and make sure table has only two columns as I have used two columns. However, you can use more than 2 columns if you like but you have to change the code a little bit for that
  --- Specify column names as follows: "weekly_task" and "percentage"
  --- Insert some data into the table
  --- For the percentage column only use a number

      ---------------------------------
      example data: Table (googlechart)
      ---------------------------------

      weekly_task     percentage
      -----------     ----------

      Sleep           30
      Watching Movie  10
      job             40
      Exercise        20     


*/

/* Your Database Name */

$DB_NAME = 'chart';

/* Database Host */
$DB_HOST = 'localhost';

/* Your Database User Name and Passowrd */
$DB_USER = 'root';
$DB_PASS = '123456';





  /* Establish the database connection */
  $mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

   /* select all the weekly tasks from the table googlechart */
  $result = $mysqli->query('SELECT * FROM googlechart');

  /*
      ---------------------------
      example data: Table (googlechart)
      --------------------------
      Weekly_Task     percentage
      Sleep           30
      Watching Movie  10
      job             40
      Exercise        20       
  */



  $rows = array();
  $table = array();
  $table['cols'] = array(

    // Labels for your chart, these represent the column titles.
    /* 
        note that one column is in "string" format and another one is in "number" format 
        as pie chart only required "numbers" for calculating percentage 
        and string will be used for Slice title
    */

    array('label' => 'Weekly Task', 'type' => 'string'),
    array('label' => 'Percentage', 'type' => 'number')

);
    /* Extract the information from $result */
    foreach($result as $r) {

      $temp = array();

      // The following line will be used to slice the Pie chart

      $temp[] = array('v' => (string) $r['weekly_task']); 

      // Values of the each slice

      $temp[] = array('v' => (int) $r['percentage']); 
      $rows[] = array('c' => $temp);
    }

$table['rows'] = $rows;

// convert data into JSON format
$jsonTable = json_encode($table);
//echo $jsonTable;


?>


<html>
  <head>
    <!--Load the Ajax API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">

    // Load the Visualization API and the piechart package.
    google.load('visualization', '1', {'packages':['corechart']});

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

    function drawChart() {

      // Create our data table out of JSON data loaded from server.
      var data = new google.visualization.DataTable(<?=$jsonTable?>);
      var options = {
           title: 'My Weekly Plan',
          is3D: 'true',
          width: 800,
          height: 600
        };
      // Instantiate and draw our chart, passing in some options.
      // Do not forget to check your div ID
      var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, options);
    }
    </script>
  </head>

  <body>
    <!--this is the div that will hold the pie chart-->
    <div id="chart_div"></div>
  </body>
</html>

13
Xin vui lòng, không sử dụng các mysql_*chức năng trong mã mới . Chúng không còn được duy trì và chính thức bị phản đối . Thấy hộp đỏ không? Thay vào đó, hãytìm hiểu về các câu lệnh được chuẩn bị và sử dụng PDO hoặc MySQLi - bài viết này sẽ giúp bạn quyết định. Nếu bạn chọn PDO, đây là một hướng dẫn tốt .
thaJeztah

4
Không nên tốt hơn để đặt các ví dụ như câu trả lời?
Carlos Campderrós

Đây không phải là một câu hỏi, nhưng một câu trả lời rất hữu ích.
Ömer

Tôi là +1, nhưng điều này thực sự sẽ hữu ích hơn nếu bạn chuyển các ví dụ sang câu trả lời và chấp nhận điều đó.
Gạch

1
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì nó không phải là một câu hỏi, mà là một hướng dẫn. Nó không cho vay để được trả lời và mô hình vai trò hành vi đăng nội dung không chính xác.
mickmackusa

Câu trả lời:


9

Một số có thể gặp phải lỗi này cục bộ hoặc trên máy chủ:

syntax error var data = new google.visualization.DataTable(<?=$jsonTable?>);

Điều này có nghĩa là môi trường của họ không hỗ trợ các thẻ ngắn, giải pháp là sử dụng cái này thay thế:

<?php echo $jsonTable; ?>

Và mọi thứ nên hoạt động tốt!


4

Bạn có thể làm điều này dễ dàng hơn. Và 100% công việc mà bạn muốn

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";  //your database password
    $dbname = "demo";  //your database name

    $con = new mysqli($servername, $username, $password, $dbname);

    if ($con->connect_error) {
        die("Connection failed: " . $con->connect_error);
    }
    else
    {
        //echo ("Connect Successfully");
    }
    $query = "SELECT Date_time, Tempout FROM alarm_value"; // select column
    $aresult = $con->query($query);

?>

<!DOCTYPE html>
<html>
<head>
    <title>Massive Electronics</title>
    <script type="text/javascript" src="loder.js"></script>
    <script type="text/javascript">
        google.charts.load('current', {'packages':['corechart']});

        google.charts.setOnLoadCallback(drawChart);
        function drawChart(){
            var data = new google.visualization.DataTable();
            var data = google.visualization.arrayToDataTable([
                ['Date_time','Tempout'],
                <?php
                    while($row = mysqli_fetch_assoc($aresult)){
                        echo "['".$row["Date_time"]."', ".$row["Tempout"]."],";
                    }
                ?>
               ]);

            var options = {
                title: 'Date_time Vs Room Out Temp',
                curveType: 'function',
                legend: { position: 'bottom' }
            };

            var chart = new google.visualization.AreaChart(document.getElementById('areachart'));
            chart.draw(data, options);
        }

    </script>
</head>
<body>
     <div id="areachart" style="width: 900px; height: 400px"></div>
</body>
</html>

loder.js liên kết ở đây loder.js


Đây có phải là mã đầy đủ? loder.js là gì? Tôi không thể làm cho nó hoạt động.
Tối đa

Nó hoạt động 100% cho tôi. Vấn đề của bạn ở đâu? Dữ liệu thu thập từ cơ sở dữ liệu và tạo biểu đồ dữ liệu đó.
AA Noman

Tôi đã tạo một tệp php với mã của bạn, tạo kết nối db và thay đổi tên trường bảng, v.v ... nó hiển thị trang trống. Tôi không có loder.js. Tôi có thể lấy nó ở đâu? nó có thể là vấn đề
Tối đa

Cảm ơn rất nhiều! nó hoạt dộng bây giờ. bạn có thể cho tôi biết làm thế nào để tùy chỉnh bảng? Tôi có thể lấy thông tin về việc này ở đâu? bởi vì tôi có một phạm vi dữ liệu dài, đồ thị rất nhỏ và dày đặc.
Tối đa

1
Theo liên kết này developers.google.com/chart/interactive/docs/quick_start Có thể nó giúp ích cho bạn. Nếu bạn tùy chỉnh bảng của mình, chỉ cần chỉnh sửa $query = "SELECT Date_time, Tempout FROM alarm_value"; // select columnbảng này
AA Noman

1

sử dụng cái này, nó thực sự hoạt động:

data.addColumn không có khóa của bạn, bạn có thể thêm nhiều cột hoặc xóa

<?php
$con=mysql_connect("localhost","USername","Password") or die("Failed to connect with database!!!!");
mysql_select_db("Database Name", $con); 
// The Chart table contain two fields: Weekly_task and percentage
//this example will display a pie chart.if u need other charts such as Bar chart, u will need to change little bit to make work with bar chart and others charts
$sth = mysql_query("SELECT * FROM chart");

while($r = mysql_fetch_assoc($sth)) {
$arr2=array_keys($r);
$arr1=array_values($r);

}

for($i=0;$i<count($arr1);$i++)
{
    $chart_array[$i]=array((string)$arr2[$i],intval($arr1[$i]));
}
echo "<pre>";
$data=json_encode($chart_array);
?>

<html>
  <head>
    <!--Load the AJAX API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">

    // Load the Visualization API and the piechart package.
    google.load('visualization', '1', {'packages':['corechart']});

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

    function drawChart() {

      // Create our data table out of JSON data loaded from server.
     var data = new google.visualization.DataTable();
        data.addColumn("string", "YEAR");
        data.addColumn("number", "NO of record");

        data.addRows(<?php $data ?>);

        ]); 
      var options = {
           title: 'My Weekly Plan',
          is3D: 'true',
          width: 800,
          height: 600
        };
      // Instantiate and draw our chart, passing in some options.
      //do not forget to check ur div ID
      var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, options);
    }
    </script>
  </head>

  <body>
    <!--Div that will hold the pie chart-->
    <div id="chart_div"></div>
  </body>
</html>

API "mysql" cũ hơn (bao gồm mysql_connect và các chức năng liên quan) hiện không được dùng nữa và không được khuyến nghị sử dụng trong mã mới. Thay vào đó, các API PDO hoặc MySQLi mới hơn được đề xuất. Xem php.net/manual/en/feft.mysql-connect.php , php.net/manual/en/mysqlinfo.api.ch Mất.phpphp.net/manual/en/iêu để biết thêm chi tiết.
Squig

0

Một số có thể gặp phải lỗi này (Tôi đã mắc phải trong khi triển khai Ví dụ về Biểu đồ PHP-MySQLi-JSON-Google ):

Bạn đã gọi phương thức draw () với loại dữ liệu sai thay vì DataTable hoặc DataView.

Giải pháp sẽ là: thay thế jsapi và chỉ sử dụng loader.js bằng:

google.charts.load('current', {packages: ['corechart']}) and 
google.charts.setOnLoadCallback 

- theo ghi chú phát hành -> Phiên bản Biểu đồ Google vẫn có sẵn thông qua trình tải jsapi không còn được cập nhật một cách nhất quán. Vui lòng sử dụng trình tải gstatic mới kể từ bây giờ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.