2016-01-06 45 views
0

我正在使用Google图表创建线图。然而在JavaScript部分,我试着通过我的PHP变量到数组但是我得到其内容的错误消息:给定Google图表不接受PHP变量

没有足够的列绘制图表要求。

我的代码:

<!-- Google Charts --> 
<div id="chart_line_graph" style="width: 100%; height: 400px; margin: 0 auto;"></div> 

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 

<? 
    $titleArray = array(
         'Week' 
         ); 
     $count = 0; 
     //Get all headers 
     $query = 'SELECT `keyword` FROM `'.$tableName.'` ORDER BY `keyword`'; 
     $results = mysqli_query($conn, $query); 
     while($row = mysqli_fetch_assoc($results)){ 
      if($count < 5) //Get first 5 keywords 
       $titleArray[] = $row['keyword']; 
      $count++; 
     } 

     $data = array(); 
     $data[] = json_encode($titleArray); 

     foreach($columns as $column){ 
      $weekData = array(); 
      $weekData[] = "'".$column."'"; 
      $query = 'SELECT `'.$column.'` FROM `'.$tableName.'` ORDER BY `keyword`'; 
      $results = mysqli_query($conn, $query); 
      $count = 0; 
      while($row = mysqli_fetch_assoc($results)){ 
       if($count < 5) 
        $weekData[] = (Integer)$row[$column]; 
       $count++; 
      } 
      $data[] = json_encode($weekData); 
     } 

?> 

<script> 
    google.charts.load('current', {'packages':['corechart']}); 
    google.charts.setOnLoadCallback(drawChart); 

    function drawChart() { 
    var data = google.visualization.arrayToDataTable([ 
    <?php 
     foreach($data as $weekData){ 
      echo $weekData.','; 
     } 
     ?>  

    ],false); 

    var options = { 
     title: '<?echo ucwords($_SESSION['clientName']);?> Keywords', 
     curveType: 'function', 
     legend: { position: 'right' } 
    }; 

    var chart = new google.visualization.LineChart(document.getElementById('chart_line_graph')); 

    chart.draw(data, options); 
    } 
    </script> 

我每次运行它,我得到了同样的错误消息。我试着输出结果并直接复制并粘贴到JavaScript中,并创建了图形。

任何想法为什么这不起作用?

编辑:

数据:

["Week","aker aberdeen","alma tavern","ancillary items","baby change sign","baby change units"], 
["10_12_2015",36,11,37,30,48], 
["17_12_2015",36,10,35,27,43], 
["24_12_2015",26,11,35,26,44], 
["31_12_2015",29,11,32,23,42], 
+0

你会告诉我们什么样的数据看起来像喂给'google.visualization.arrayToDataTable' – WhiteHat

+0

我不能评论PHP方面,因为我在那方面不强,但要确保数据是浏览器正在接收的代码实际上出现了什么。你的数组结构看起来不错。虽然你得到的错误表明它没有得到你的数组。或阵列的格式不正确(像有它周围的东西或一些报价)。 – nbering

+0

当我看到它缺少对数组号的信号,我不知道为什么它不捡起来 – MrHappySandwich

回答

0

我想通了。出于某种原因,mysqli无法正常工作。我将其从程序化方式改为面向对象的方式,一切都奏效了。我不知道为什么我只知道它的工作。