2013-12-20 5 views
0

Я работаю над этим проектом, который мне нужен, чтобы составить диаграмму Google (диаграмма столбца), чтобы визуализировать данные в моей базе данных. Я проверил IP и базу данных (данные поступают из базы данных), все работает нормально. Но когда я пытаюсь увидеть вывод на своем компьютере, страница пуста. Я думал, что проблема исходит от google.load, и я сделал это как показано ниже. Я все еще получаю пустую страницу. Пожалуйста, помогите мне пройти. Благодаря!Google Column Chart blank page

// 
    google.load('visualization', '1.0', {packages:['corechart'], callback: drawChart}); 
// 

Вот целая страница.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"><html> 
     <head> 
      <title>R1 Google Chart</title> 
      <!-- Load jQuery --> 
      <script language="javascript" type="text/javascript" 
       src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"> 
      </script> 
      <!--Load the Ajax API--> 
      <script type="text/javascript" src="https://www.google.com/jsapi"></script> 

      <script type="text/javascript"> 
      // Load the Visualization API and the column chart package. 
      // Set a callback to run when the Google Visualization API is loaded. 
      google.load('visualization', '1.0', {packages:['corechart'], callback: drawChart}); 

      function drawChart() { 
       var jsonData = $.ajax({ 
        url: "chart.php", 
        dataType: "json", 
        async: false 
       }).responseText; 

       var obj = jQuery.parseJSON(jsonData); 
       var data = google.visualization.arrayToDataTable(obj); 
       var options = { 
        title: 'Solar Panel Data', 
        width: 800, 
        height: 600, 
        hAxis: {title: 'time', titleTextStyle: {color: 'red'}} 
       }; 
       var chart = new google.visualization.ColumnChart(document.getElementById('chart_div')); 
       chart.draw(data, options); 
      } 
      </script> 
     </head> 
     <body> 
      <!--this is the div that will hold the column chart--> 
      <div id="chart_div" style="width: 900px; height: 500px;"> 
      </div> 
     </body> 
    </html> 

PHP страница

<?php 
      $con=mysql_connect("131.xxx.xxx.xx","xx","xxxx") or die("Failed to connect with database!!!!"); 
      mysql_select_db("r1array", $con); 
      /** This example will display a column 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 UNIX_TIMESTAMP(TimeStamp), Pac FROM SolarData"); 
      /* 
      --------------------------- 
      example data: Table (Chart) 
      -------------------------- 
      TimeStamp    Pac 
      2013-08-16 06:45:01  0 
      2013-08-16 06:50:01  0 
      2013-08-16 06:55:01  12 
      2013-08-16 07:00:00  39 
      2013-08-16 07:05:01  64 
      2013-08-16 07:10:00  84 

      */ 

      $rows = array(); 
      //flag is not needed 
      $flag = true; 
      $table = array(); 
      $table['cols'] = array(
       // Labels for your chart, these represent the column titles 
       array('label' => 'TimeStamp', 'type' => 'TIMESTAMP DEFAULT NOW()'), 
       array('label' => 'Pac', 'type' => 'INT') 
      ); 
      $rows = array(); 
      while($r = mysql_fetch_assoc($sth)) { 
       $temp = array(); 
       // 
       $temp[] = array('v' => (string) $r['TimeStamp']); 

       // Values of each slice 
       $temp[] = array('v' => (int) $r['Pac']); 
       $rows[] = array('c' => $temp); 
      } 
      $table['rows'] = $rows; 
      $jsonTable = json_encode($table); 
      echo $jsonTable; 
      mysql_close($db); 
     ?> 
+0

Использовать пожарную ошибку для отслеживания проблемы. Проверьте свою консоль firebug и убедитесь, что в ней нет ошибок. – phpsmashcode

+0

Я использовал Firebug. Я вижу все мои коды. Но кажется, что Firebug не дает вам ошибок, если я правильно его использую ... –

+0

Перейдите в 'chart.php' в своем браузере и обновите сообщение с тем, что выводится вашим PHP. – asgallant

ответ

0

Кажется, что подготовить данные в неправильном пути в файле PHP. С вашим файлом html и последующим файлом php, который подделывает ваши данные, я получил диаграмму столбцов.

<?php 
    /* 
    --------------------------- 
    example data: Table (Chart) 
    -------------------------- 
    TimeStamp    Pac 
    2013-08-16 06:45:01  0 
    2013-08-16 06:50:01  0 
    2013-08-16 06:55:01  12 
    2013-08-16 07:00:00  39 
    2013-08-16 07:05:01  64 
    2013-08-16 07:10:00  84 
    */ 

    $table = array(); 

    $table[0] = array('TimeStamp', 'Pac'); 
    $table[1] = array('2013-08-16 06:45:01',  0); 
    $table[2] = array('2013-08-16 06:50:01',  0); 
    $table[3] = array('2013-08-16 06:55:01',  12); 
    $table[4] = array('2013-08-16 07:00:00',  39); 
    $table[5] = array('2013-08-16 07:05:01',  64); 
    $table[6] = array('2013-08-16 07:10:00',  84); 

    $jsonTable = json_encode($table); 
    echo $jsonTable; 
?> 

Существует комментарий в файле PHP Этот пример будет отображать круговую диаграмму .... Какую диаграмму вы хотите создать?

+0

Извините, я пытаюсь отобразить данные столбца, это точно. –

0

С места в карьер, я вижу проблемы здесь:

$table['cols'] = array(
    // Labels for your chart, these represent the column titles 
    array('label' => 'TimeStamp', 'type' => 'TIMESTAMP DEFAULT NOW()'), 
    array('label' => 'Pac', 'type' => 'INT') 
); 

в 'TIMESTAMP DEFAULT NOW()' и 'INT' не являются допустимыми типами данных для DataTable. Если вы хотите создать объекты Date из ваших временных меток, вам необходимо использовать тип данных 10 или 'datetime' и отформатировать временные метки в виде строк в формате 'Date(year, month, day, hour, minute, second, millisecond)', где month индексируется с нулевой отметкой (так что январь равен 0, а не 1). Тип 'INT' должен быть 'number'.

Обновите свой код с помощью этих исправлений. Если ваша диаграмма все еще не работает, просмотрите chart.php в браузере - вы должны увидеть строковый вывод JSON ваших данных (если нет, есть проблема в вашем PHP, что вам придется отлаживать) - и обновите свой пост этим Строка JSON.