Javascript 是否基于日期更改显示的数据?

Javascript 是否基于日期更改显示的数据?,javascript,php,jquery,html,chart.js,Javascript,Php,Jquery,Html,Chart.js,我有一个简单的部分,显示数据库中的数据 ,在我的数据库中,有两个表共享'sid'会话id;我的桌子 看起来像这样 Events table id sid targetbuttonid 1 1377Qqng1hn4866h7oh0t3uruu27dm5 Yes 2 9021391Q86nog1028jnoqol8bqcrt182o7 No 3 541Qqta8cs8s6kv60fei8i6

我有一个简单的部分,显示数据库中的数据 ,在我的数据库中,有两个表共享'sid'会话id;我的桌子 看起来像这样

Events table

id  sid                                    targetbuttonid

1   1377Qqng1hn4866h7oh0t3uruu27dm5        Yes
2   9021391Q86nog1028jnoqol8bqcrt182o7     No
3   541Qqta8cs8s6kv60fei8i6jbesg36         Yes

我使用饼图上的图表来显示这些数据,如下所示

HTML

这里是php

<?php
//setting header to json
header('Content-Type: application/json');

//database
define('DB_HOST', 'localhost');
define('DB_USERNAME', 'vvvv');
define('DB_PASSWORD', 'vvvvv');
define('DB_NAME', 'vvvvv');

$firstdate = $_POST['firstdatepicker'];
$lastdate = $_POST['lastdatepicker'];
//get connection
$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

if(!$mysqli){
  die("Connection failed: " . $mysqli->error);
}

if (isset($_POST['firstdatepicker'])) {

  $firstDate= $_POST['firstdatepicker'];
  $lastDate= $_POST['lastdatepicker'];

  $sql = sprintf("SELECT count(*) as num_rows, datetime, count(distinct sid) as sessions, sum( targetbuttonname = 'yes' ) as num_yes, sum( targetbuttonname = 'no' ) as num_no from events AND time BETWEEN '$firstdate' AND '$lastdate'  ORDER BY datetime DESC");
}

//$query =sprintf("SELECT SUM( sid ) as session , COUNT( targetbuttonname ) as yes FROM events WHERE targetbuttonname LIKE  'Yes'");
$query = sprintf("SELECT count(*) as num_rows, count(distinct sid) as sessions, sum( targetbuttonname = 'yes' ) as num_yes, sum( targetbuttonname = 'no' ) as num_no from events;");
//execute query
$result = $mysqli->query($query);

//loop through the returned data
$data = array();
foreach ($result as $row) {
  $data[] = $row;
}

$result->close();

$mysqli->close();
print json_encode($data);
现在我想当用户在某些日期之间选择日期时,在饼图中它应该显示基于用户选择的日期的数据

不幸的是,现在我选择的日期数据仍然相同


我在代码中做错了什么?

在AJAX请求中使用POST而不是GET

$firstDate= $_POST['firstdatepicker'];
$lastDate= $_POST['lastdatepicker'];

既然你让我看一看你的问题,我就在这段代码中重新创建了整个客户端,一切正常。错误必须在php代码中

我自己从来没有做过php,但如果我发现它有什么问题,我会更新答案。如果我猜一下,我会说你需要在某处使用$sql

//旁路CORS jQuery.ajaxPrefilterfunctionoptions{ if options.crossDomain&&jQuery.support.cors{ options.url=https://cors-anywhere.herokuapp.com/“+options.url; } }; //更新代码 $document.readyfunction{ $.datepicker.SetDefault{ 日期格式:“yy-mm-dd” }; $firstdatepicker.datepicker; $lastdatepicker.datepicker; $“过滤器”。单击函数{ var from_date=$'firstdatepicker'.val; var to_date=$'lastdatepicker'.val; 如果从_日期!=&到_日期!={ console.logfrom_date,to_date; $.ajax{ 网址:https://meed.audiencevideo.com/admin/chats/stats.php, 类型:GET, 数据:{ 起始日期:起始日期, 截止日期:截止日期 }, 成功:functiondata{ 控制台日志数据[0] var会话=数据[0]。会话; var num_yes=数据[0]。num_yes; var num_no=数据[0]。num_no; var ctx=document.getElementByIdmyPieChart; var myChart=新的Chartctx{ 键入“pie”, 数据:{ 标签:[会话,是,否], 数据集:[{ 标签:“性别”, 数据:[会话,数值是,数值否], 背景颜色:[ ‘rgba255、99、132、0.2’, ‘RGBA54162235,0.2’, ‘RGBA54162235,1’ ], 边框颜色:[ “rgba255,99132,1”, ‘RGBA54162235,1’, ‘rgba255、99、132、0.2’, ], 边框宽度:1 }] }, }; } }; }否则{ 请选择日期; } }; }; 画布{显示:块;} 数据从到
您如何处理输入更改?我没看见你的眼睛code@JoseRojas对不起,我忘了添加过滤器处理部分,现在检查更新的问题你能解释一下你的答案吗?我不明白,正如你所看到的,我使用了POST,但你建议我再次使用POST?@user9964622你在ajax请求中使用的是get而不是POST,这就是Ericv的意思。在JS代码中输入´type:POST´-type:GET。如果这些输入值随请求一起传递,请检入调试器。我已将GET to POST更改为在控制台中我可以看到日期从,到,在这里你可以在网络上检查,但数据仍然没有更改。请在呈现新图表之前尝试销毁旧图表。
  $(document).ready(function(){  
       $.datepicker.setDefaults({  
            dateFormat: 'yy-mm-dd'   
       });  
       $(function(){  
            $("#firstdatepicker").datepicker();  
            $("#lastdatepicker").datepicker();  
       });  
       $('#filter').click(function(){  
            var from_date = $('#firstdatepicker').val();  
            var to_date = $('#lastdatepicker').val();  
            if(from_date != '' && to_date != '')  
            {  
                 $.ajax({  
                      url:"https://meed.audiencevideo.com/admin/chats/stats.php",  
                      type:"GET",  
                      data:{from_date:from_date, to_date:to_date},  
                      success:function(data){  
                        var session= data[0].sessions;
                        var yes = data[0].num_yes;
                        var no =data[0].num_no;
                        var ctx = document.getElementById("myPieChart");
                        var myChart = new Chart(ctx, {
                          type: 'pie',
                          data: {
                              labels: ["sessions","yes", "no"],
                              datasets: [{
                                label: 'Genders',
                                data: [session,yes, no],
                                backgroundColor: [
                                    'rgba(255, 99, 132, 0.2)',
                                    'rgba(54, 162, 235, 0.2)',
                                    'rgba(54, 162, 235, 1)'
                                ],
                                borderColor: [
                                    'rgba(255,99,132,1)',
                                    'rgba(54, 162, 235, 1)',
                                    'rgba(255, 99, 132, 0.2)',
                                ],
                                borderWidth: 1
                            }]
                        },

                        });
                      }  
                 });  
            }  
            else  
            {  
                 alert("Please Select Date");  
            }  
       });  
  });  
<?php
//setting header to json
header('Content-Type: application/json');

//database
define('DB_HOST', 'localhost');
define('DB_USERNAME', 'vvvv');
define('DB_PASSWORD', 'vvvvv');
define('DB_NAME', 'vvvvv');

$firstdate = $_POST['firstdatepicker'];
$lastdate = $_POST['lastdatepicker'];
//get connection
$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

if(!$mysqli){
  die("Connection failed: " . $mysqli->error);
}

if (isset($_POST['firstdatepicker'])) {

  $firstDate= $_POST['firstdatepicker'];
  $lastDate= $_POST['lastdatepicker'];

  $sql = sprintf("SELECT count(*) as num_rows, datetime, count(distinct sid) as sessions, sum( targetbuttonname = 'yes' ) as num_yes, sum( targetbuttonname = 'no' ) as num_no from events AND time BETWEEN '$firstdate' AND '$lastdate'  ORDER BY datetime DESC");
}

//$query =sprintf("SELECT SUM( sid ) as session , COUNT( targetbuttonname ) as yes FROM events WHERE targetbuttonname LIKE  'Yes'");
$query = sprintf("SELECT count(*) as num_rows, count(distinct sid) as sessions, sum( targetbuttonname = 'yes' ) as num_yes, sum( targetbuttonname = 'no' ) as num_no from events;");
//execute query
$result = $mysqli->query($query);

//loop through the returned data
$data = array();
foreach ($result as $row) {
  $data[] = $row;
}

$result->close();

$mysqli->close();
print json_encode($data);
$firstDate= $_POST['firstdatepicker'];
$lastDate= $_POST['lastdatepicker'];