Диаграмма не отображается (Google Maps + Codeigniter) - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь отобразить простой график, но он не отображается на локальном хосте. Я использую codeigniter Framework + Google Maps.

Я хочу отобразить этот простой график: График

Data_model.php

defined('BASEPATH') OR exit('No direct script access allowed');


class Data_model extends CI_Model {

private $performance = 'sportoviska_zakaznici';

function __construct() {

}

function get_chart_data() {


   return $this->db->query('SELECT pohlavie, count(*) as counts FROM sportoviska_zakaznici GROUP BY rok')->result_array();
}

}

Charts.php (контроллер):

class Charts extends CI_Controller {


function __Construct() {
    parent::__Construct();

    $this->load->helper(array('form', 'url'));
       $this->load->model('data_model', 'chart');

}

public function index()
{

            $data['chart_data'] = $this->chart->get_chart_data();

    $this->load->view('uvodna_stranka', $data);
}


}

uvodna_stranka.php (просмотр):

<!DOCTYPE html>
<html>
    <head>
      <meta charset="UTF-8"/>
        <title></title>
        <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
        <script type="text/javascript">



            // Load the Visualization API and the line package.
           // google.charts.load('current', {'packages':['bar', 'timeline']});
             google.charts.load('current', {'packages':['corechart']});
            // Set a callback to run when the Google Visualization API is loaded.
            google.charts.setOnLoadCallback(drawChart);

            function drawChart() {

              var data = google.visualization.arrayToDataTable([
                    ['pohlavie', 'counts'}],
<?php
foreach ($chart_data as $data) {
    echo "['".$data["pohlavie"]."', ".$data["counts"]."],";
}
?>  
               var options = {

                        title: 'Company Performance'

                };

     var chart = new google.visualization.PieChart(document.getElementById('piechart'));
      chart.draw(data, options);

            }

       </script>

    </head>
    <body>
       <b>Bla bla<b>
            <div id="piechart" style="width: 900px;"></div>
</body>
</html>

Я пытаюсь отобразить данные из этой таблицы MySQL: Mysql table

Когда я пытаюсь получить к нему доступ, мой локальный график не отображается. Вот как это выглядит: Изображение

Так в чем же проблема?

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Во-первых, у вас есть проблемы с синтаксисом, у вас есть закрывающая скобка в ['pohlavie', 'counts' } ], , которая даже не открывается или имеет какую-либо публичную часть, я думаю.

Затем, когда у вас есть данные, в которых вы никогда не закрываете теги из функции:

var data = google.visualization.arrayToDataTable([
                ['pohlavie', 'counts'}],
<?php
foreach ($chart_data as $data) {
 echo "['".$data["pohlavie"]."', ".$data["counts"]."],";
}

Я пошел на https://developers.google.com/chart/interactive/docs/drawing_charts и обнаружил, что вы, вероятно, должны бытьиспользуя следующий первый пример.В вашем случае он должен идти по следующим направлениям вместо ваших var data :

data = new google.visualization.DataTable();
data.addColumn('string', 'pohlavie');
data.addColumn('number', 'counts');
data.addRows([
<?php 
    foreach ($chart_data as $data) {
        echo '["'.$data["pohlavie"].'","'.$data["counts"].'"]';
    }
?>
]);

Просто чтобы убедиться, что вы должны проверить примеры документации Google charts.

0 голосов
/ 02 мая 2019

вы можете проверить консоль браузера на наличие ошибок (нажмите F12 на большинстве)

здесь есть пара проблем ...

var data = google.visualization.arrayToDataTable([
      ['pohlavie', 'counts'}],

<?php
foreach ($chart_data as $data) {
    echo "['".$data["pohlavie"]."', ".$data["counts"]."],";
}
?>  

сначала есть окончательная фигурная скобкаместа после -> 'counts'}
удалить его ...

далее, массив данных не имеет конечных скобок -> ]);

изменить вышек ...

var data = google.visualization.arrayToDataTable([
      ['pohlavie', 'counts'],

      <?php
      foreach ($chart_data as $data) {
          echo "['".$data["pohlavie"]."', ".$data["counts"]."],";
      }
      ?>  
    ]);
...