在Highcharts中添加级数时,Javascript循环不通过sqlite_fetch_array()设置PHP值
Javascript loop not setting PHP value via sqlite_fetch_array() when adding series in Highcharts
我有一个SQLite数据库,我正在尝试使用Highcharts, PHP和Javascript在线图上绘制数据。我正在为每个用户绘制一个系列(用户是每个元组的文本值),但是在通过PHP循环检索后续用户时遇到了麻烦。
$dbhandle = sqlite_open('db/test.db', 0666, $error);
if (!$dbhandle) die ($error);
$query5 = "SELECT DISTINCT User FROM Events";
$ok0 = sqlite_query($dbhandle, $query5, $error_msg);
if (!$ok0)
{
die("dead" . $error_msg);
}
$rows = sqlite_num_rows($ok0);
echo
"for(var i=2; i<$rows; i++) // start of JS loop.
//$rows is 4; I am graphing 2 series here
{";
$array = sqlite_fetch_array($ok0, SQLITE_ASSOC); // $ok0 is the unique list
// of users. After graphing one series, I want to grab the next user to graph
echo "chart.addSeries({
name: '{$array["User"]}',
data: [";
for($i=0; $i<$diff+1; $i++)
{
$target = date("D, j M", (strtotime($_GET["start"]) + $i * 24 * 3600));
$query6 = "SELECT * FROM Events WHERE User = '{$array["User"]}' AND Start LIKE '%{$target}%'";
$result6 = sqlite_query($dbhandle, $query6);
if (!$result6) die("Cannot execute query.");
$num = sqlite_num_rows($result6);
if($i==($diff))
{
echo $num;
}
else
echo $num . ", ";
}?>],
pointStart:
<?php
$date = DateTime::createFromFormat('D M d Y', urldecode($_GET["start"]));
echo $date->getTimestamp()*1000;?>,
pointInterval: 24 * 3600 * 1000 // one day
});
<?php echo "}";?> // end of JS loop
结果确实绘制了另外两个序列的图,但它们都是来自同一用户的相同数据。它看起来不像sqlite_fetch_array()的循环正确返回下一个用户。有人看到问题了吗?比如我把Javascript和PHP集成在一起?
这行代码每次调用时都做同样的事情:
$query6 = "SELECT * FROM Events WHERE User = '{$array["User"]}' AND Start LIKE '%{$target}%'";
$array
应该有一个不同用户的列表,但是您没有显示$ok0
的查询。你在这个循环for($i=0; $i<$diff+1; $i++)
中做用户查找,但是你没有使用这些变量来决定取哪个用户。
我想发布从$array
查找下一个用户的正确方法,但我不知道结构是什么。如果你不知道如何让你的$query6
对每个用户都是唯一的,你就必须发布更多的信息,比如$array
的var_dump
或$ok0
的查询文本。
也许您只需要将这行$array = sqlite_fetch_array($ok0, SQLITE_ASSOC);
移动到for
循环中,但是这样您就会冒$i
和$diff+1
与结果中可用的行数不一致的风险。
我明白了。我认为,由于PHP是在服务器端执行的,所以当浏览器执行Javascript时,返回的Javascript循环中的代码块会产生相同的值。服务器只是回显表示js循环的字符串,然后运行代码块。当所有内容都发送到浏览器时,Javascript将正常循环并简单地输出两次代码块的结果。我刚刚通过PHP放弃了JS循环,代之以PHP循环。
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 是否可以使用NativeScript使用Sqlite数据库
- IE11中的第二个调用取消了第一个Fetch API调用
- ajaxStart和ajaxStop等同于fetch API
- SQLite插件适用于Mac和Windows,但不适用于手机上的Safari
- Backbone fetch中的Ajax在fetch调用退出后完成,因此fetch调用中没有成功/失败事件
- sqlite查询返回错误-can'我不知道为什么
- 如何使用Redux Thunk处理fetch()响应中的错误
- 使用Javascript将多条记录插入SQLite数据库时出错
- 连接SQlite数据库
- 如何用javascript,phonegap(cordova)将json对象插入sqlite表中
- 以html形式显示sqlite数据库中的数据(phonegap)
- fetch(),如何进行非缓存请求
- 如何在fetch post调用后管理重定向请求
- 为什么新js Fetch标准禁止响应头名称为'设置Cookie 1/2'
- node.js脚本中出现Sqlite Sqlite_MISUSE错误
- 将数据插入android中的SQLite存储时出现异常
- 如何使用PhoneGap在Sqlite中存储当前日期和时间