Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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
在Highcharts中添加序列时,Javascript循环未通过sqlite_fetch_array()设置PHP值_Php_Javascript_Sqlite_Highcharts_Linechart - Fatal编程技术网

在Highcharts中添加序列时,Javascript循环未通过sqlite_fetch_array()设置PHP值

在Highcharts中添加序列时,Javascript循环未通过sqlite_fetch_array()设置PHP值,php,javascript,sqlite,highcharts,linechart,Php,Javascript,Sqlite,Highcharts,Linechart,我有一个SQLite数据库,正在尝试使用Highcharts、PHP和Javascript在折线图上绘制数据。我正在为每个用户绘制一个系列(一个用户是每个元组的文本值),但在通过PHP循环检索后续用户时遇到了麻烦 $dbhandle = sqlite_open('db/test.db', 0666, $error); if (!$dbhandle) die ($error); $query5 = "SELECT DISTINCT User FROM Events"; $ok0 = sqlit

我有一个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
$dbhandle=sqlite\u open('db/test.db',0666,$error);
如果(!$dbhandle)死亡($error);
$query5=“从事件中选择不同的用户”;
$ok0=sqlite\u query($dbhandle、$query5、$error\u msg);
如果(!$ok0)
{
死亡(“死亡”。$error\u msg);
}
$rows=sqlite\u num\u行($ok0);
回音

“对于(var i=2;i这行代码,每次调用它时都会执行相同的操作:

$query6 = "SELECT * FROM Events WHERE User = '{$array["User"]}' AND Start LIKE '%{$target}%'";

$array
应该有一个不同用户的列表,但是您没有显示对
$ok0
的查询。您正在这个循环中对
进行用户查找($i=0;$i我已经找到了答案。我相信,由于PHP是在服务器端执行的,所以当浏览器执行Javascript时,回送Javascript循环中的代码块会产生相同的值。服务器只会回送代表js循环的字符串,然后再运行代码块。当所有内容都发送到浏览器时,tJavascript将正常循环,只需输出代码块的结果两次。我刚刚放弃了通过PHP的JS循环,并将其替换为一个PHP循环。

如果你看一下你的代码,你会发现你有很多sintax错误,另一个问题是你正在通过PHP构建Javascript。如何将它们分开?我不确定是否有错误yntax错误,因为有一个由该代码段绘制的带有两个系列的结果图。但是将PHP与回送Javascript代码段相结合会很混乱。我想知道是否有人能看到这个问题?也许我只是不熟悉sqlite函数,但我没有看到任何会增加$array的内容-您的查询似乎使用了每次都是相同的$array[“User”]。如果我错了,请纠正我?也许您需要将整个过程包装在while()循环中?函数sqlite_fetch_array()从结果集中获取下一行作为数组。我不确定为什么在这种情况下不会这样做;我从PHP中回显Javascript for循环,并且我假设sqlite_fetch_array()将持续为每个循环获取下一个用户。因此,$array[“user”]应为每个迭代返回下一个用户。谢谢,我添加了代码段。对于给定的迭代,$query6旨在获取当前用户和日期。$I=0;$I的嵌套循环
$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