Javascript 是否基于日期更改显示的数据?
我有一个简单的部分,显示数据库中的数据 ,在我的数据库中,有两个表共享'sid'会话id;我的桌子 看起来像这样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
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'];