Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么';谷歌图表不能使用这种日期格式吗?_Php_Sql_Json - Fatal编程技术网

Php 为什么';谷歌图表不能使用这种日期格式吗?

Php 为什么';谷歌图表不能使用这种日期格式吗?,php,sql,json,Php,Sql,Json,我正在使用PHP和SQL生成使用Google图表的图表 我有一个特别的图表,我已经开始,但谷歌图表似乎不喜欢SQL返回的日期格式 代码 <?php include('core/connection.php'); $stid = oci_parse($conn, " SELECT EntryDate AS \"Date\", COUNT(OrderNo) AS \"Orders\" FROM Orders WHERE EntryDate > '01-MAY-

我正在使用PHP和SQL生成使用Google图表的图表

我有一个特别的图表,我已经开始,但谷歌图表似乎不喜欢SQL返回的日期格式

代码

<?php 

include('core/connection.php');

$stid = oci_parse($conn, "     
  SELECT EntryDate AS \"Date\", COUNT(OrderNo) AS \"Orders\"
  FROM Orders
  WHERE EntryDate > '01-MAY-2014'
  AND CustomerNo = 1
  GROUP BY EntryDate
");
oci_execute($stid);

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

    array('label' => 'Date', 'type' => 'date'),
    array('label' => 'Orders', 'type' => 'number')

);

$rows = array();
while($row = oci_fetch_assoc($stid)) {
    $temp = array();

    $date = new \DateTime($row['Date']);            
    $dateStringForGoogleCharts = $date->format("Y/m/d H:i");

    $temp[] = array('v' => (int) $dateStringForGoogleCharts);
    $temp[] = array('v' => (int) $row['Orders']);
    $rows[] = array('c' => $temp);
}

$table['rows'] = $rows;
$jsonTable = json_encode($table);

oci_close($conn);

?>

<html>
  <head>
    <!--Load the AJAX API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.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 = {
          width:  1600,
          height: 800
        };
      // Instantiate and draw our chart, passing in some options.
      // Do not forget to check your div ID
      var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
      chart.draw(data, options);
    }

    </script>
  </head>

  <body>
    <div id="chart_div"></div>
  </body>
</html>

我使用以下JS成功地做到了这一点:

function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('datetime', 'Date');
    data.addColumn('number', 'Value');
    data.addRows(<?=$json?>);

    var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
    chart.draw(data, {displayAnnotations: true, colors: ['blue', 'red']});
}
关键点是“Y/m/dh:i”的格式——这就是谷歌喜欢的图表格式


我的建议是使用将来自数据库的日期格式转换为此格式。我似乎还记得在使用API所接受的格式时遇到过一些尝试和错误,但这种格式确实有效。

哪个数据库是oracle、mysql?谢谢你的回答!我决不是专家,我对这一切都是新手,但我正在慢慢地到达那里。我已经试着遵循你的代码。我有
$temp[]=array('v'=>(int)$r['DATE'])
我猜这是SQL返回的日期行,因此当前返回格式的示例是
08-MAY-2014
。Google Charts期望得到什么?我能不能包装一下这个
$temp[]=array('v'=>(int)$r['DATE'])undefined不是一个红色框中的函数
。HTML和JS对我有效,任意JSON字符串取自谷歌图表网站。你能把$jsonTable中的字符串贴在这里吗?
{“cols”:[{“label”:“Date”,“type”:“Date”},{“label”:“Orders”,“type”:“number”}],“rows”:[{“c”:[{“v”:2014},{“v”:8},{“c”:[{“v”:2014},{“v”:10},{“c”:[{“v”:2014},{“v”:9},{“c”:[{“v”:2014},{“v”:9},{“v”},{“v”:9}/code>。
$date = new \DateTime($row['date']);            
$dateStringForGoogleCharts = $date->format("Y/m/d H:i");