php - 使用 PHP/MySQL 日期查询向 Google 可视化页面提交表单

标签 php javascript jquery html google-visualization

我正在使用从 PHP/MySQL 提取的数据在 Google 可视化上创建饼图。

图表看起来不错,但我想添加一个日历(日期选择器)以使饼图动态化。

我的日期范围选择器似乎可以正常工作。它从我的数据库中提取正确的数据。

选择日期:

enter image description here

提交查询后:

它返回此字符串:(overall_ban_pos_pie_date.php)

{"cols":[{"id":"0","label":"Column 1","type":"string"},{"id":"1","label":"Count","type":"number"}],"rows":[{"c":[{"v":"String Value 1"},{"v":6}]},{"c":[{"v":"String Value 2"},{"v":4}]}]}

该字符串可由谷歌可视化读取。如果我使用此 PHP 页面作为饼图的数据表源,它将显示其值。

我的问题/疑问是:

点击“提交查询”按钮后,它会将我定向到 php 字符串页面。我想要发生的是,当用户选择开始和结束日期并单击提交查询时,我需要根据从数据库查询的日期更改饼图,而不是定向到overall_ban_pos_pie_date.php(我用于我的饼图作为使用 JSON 字符串的数据表)。我希望这可以将我重定向到我的

饼图页面: (calendar_test.html)

enter image description here

有人可以告诉我该怎么做吗?提前致谢。

PHP 代码:(overall_ban_pos_pie_date.php)

<?php
$con = mysql_connect("localhost","root","");
if (!$con)

  die('Could not connect: ' . mysql_error());

mysql_select_db("db_campanaltest", $con);

$j=0;
$k=1;
$l=0;

$label = array("String Value 1","String Value 2");

$cols = '{"cols":[{"id":"'.$j.'","label":"Column 1","type":"string"},{"id":"'.$k.'","label":"Count","type":"number"}],';

$field1 = $_POST['startdate']; 
$field2 = $_POST['enddate']; 

$query = mysql_query("SELECT fk_IntCampID, COUNT( * ) AS count
FROM tbl_trans2
WHERE date
BETWEEN '".$field1."'
AND '".$field2."'
AND fk_IntCampID =  '1'
AND eventScored =  'Y'
AND scoreQuoteSent =  'Y'
OR date
BETWEEN '".$field1."'
AND '".$field2."'
AND fk_IntCampID = '5'
AND eventScored = 'Y'
AND scoreQuoteSent = 'Y'
GROUP BY fk_IntCampID");



while($r = mysql_fetch_assoc($query)){

  $rows[] = '{"c":[{"v":'.'"'. $label[$l].'"},{"v":'. $r['count'].'}]}';
$l++;

}



$google_JSON_row =implode(",",$rows);



echo $cols . '"rows":[',$google_JSON_row ."]}";

?>

HTML 页面:显示日历和饼图(希望如此)

<!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">
  <head>

  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript"
  src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart','table','piechart']}]}">
</script>

 <script type="text/javascript">


google.setOnLoadCallback(pieChart);


function pieChart() {
      var startdate  = "";
      var enddate  =  "";
         if ($("#datepicker").hasClass('hasDatepicker')) {
            startdate  = $("#datepicker").datepicker('getDate');
             }
           if ($("#datepicker2").hasClass('hasDatepicker')) {
           enddate  = $("#datepicker2").datepicker('getDate');
            }

      var pieJsonData = $.ajax({
          url: "overall_ban_pos_pie_date.php?startdate=" + startdate + "&amp;enddate=" + enddate,
          dataType:"json",
          async: false
          }).responseText;

var pieData = new google.visualization.DataTable(pieJsonData);


var pieChartWrapper = new google.visualization.ChartWrapper({
          'chartType': 'PieChart',
          'containerId': 'pie_div',
      'dataTable':pieData,
          'options': {
    chartArea:{left:10,top:40,height:200,width:360},
    width:300, 
    height:260,
    title: "Neutral Percentage", 
    titleTextStyle:{fontSize:12},
    tooltip:{showColorCode:true},
    legend:{textStyle:{fontSize: 10},position:'left'},
    pieSliceTextStyle:{fontSize: 10}
          }
        });



pieChartWrapper.draw();


}
  </script>

  <script>

  $(document).ready(function() {
    $("#datepicker").datepicker({dateFormat: "yy-mm-dd"});
  });

  $(document).ready(function() {
    $("#datepicker2").datepicker({dateFormat: "yy-mm-dd"});
  });


  $("#pieChart").click(function(e) {
    e.preventDefault();
     pieChart();
  });
  </script>



</head>
<body style="font-size:62.5%;">

  <form action="overall_ban_pos_pie_date.php" method="post">

Start Date: <input type="text" name="startdate" id="datepicker"/>
End Date: <input type="text" name="enddate" id="datepicker2"/>

<input type="submit"  id="pieChart"/>

</form>
<div id="pie_div"></div>     
</body>
</html>

最佳答案

尝试这样:

$("#pieChart").click(function(e) {
   e.preventDefault();
   pieChart();
});

这将禁用表单提交并调用 picart() 函数。现在修改 pieChart()varieJsonData = ... 行,如下所示:

var startdate  = "";
var enddate  =  "";
if ($("#datepicker").hasClass('hasDatepicker')) {
    startdate  = $("#datepicker").datepicker('getDate');
}
if ($("#datepicker2").hasClass('hasDatepicker')) {
    enddate  = $("#datepicker2").datepicker('getDate');
}
var pieJsonData = $.ajax({
     url: "overall_ban_pos_pie_date.php?startdate=" + startdate + "&amp;enddate=" + enddate,
     dataType:"json",
     async: false
     }).responseText;

关于php - 使用 PHP/MySQL 日期查询向 Google 可视化页面提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9781012/

相关文章:

javascript - 如何在 symfony2 中提交表单 ajax?

javascript - 如何修复错误并在 Laravel/Vue 应用程序中正确使用 Vuetify

javascript - 正确显示前 3 行后,Div 神秘地向下移动

javascript - Knockout绑定(bind)错误,无法在iFrame内绑定(bind)viewModel

javascript - Android Webview Javascript点击事件没有触发,因为它应该

javascript - jQuery:.on() 使用普通对象中的事件来引用一个函数

php - 数据库中的复杂关系(使用 Laravel)

php - HTTPS 错误 - 您无权访问此服务器上的/index.php

javascript - ReactJS 中 map 内的映射

javascript - 如何使用 jQuery 隐藏和显示 div 的一部分