当前位置: 首页 > 知识库问答 >
问题:

创建从数据库获取数据的折线图

云隐水
2023-03-14

我尝试在D3中创建一个简单的条形图,从数据库中获取数据。其想法是使用参数和国家的选择按钮从数据库中提取年份和值,并以简单条形图的形式显示。我有两个选择按钮和一个提交按钮。代码如下:

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

       <tr>
    <th valign="bottom">Select country:</th>
    <td >   
    <select name="country" class="">

        <option value= "NPL">Nepal</option>
         <option value= "IND">India</option>


        </select>

    </td>
    <th valign="bottom">Select parameters:</th>
    <td >   
    <select name="indices" class="">

        <option value= "foodfinal">Vulnerability on food</option>
         <option value= "waterfinal">Vulnerability water </option>


        </select>

    </td>
    <td valign="top">
        <input type="submit" class="action" />
        </td>
     </tr>
     </form> 

Foodfiner和Waterfiner是数据库中名为“气候”的表的名称。NPL和IND是国家代码。我的PHP代码(data.php)是这样的:

<?php
$username = "root"; 
$password = "";   
$host = "localhost";
$database="climate";
$country="AFG"; 
$country=$_POST["country"];
 $indices=$_POST["indices"];

$server = mysql_connect($host, $username, $password);
$connection = mysql_select_db($database, $server);

$myquery = "SELECT  `year`, `values` FROM  `$indices` WHERE `countrycode`= '$country'";
$query = mysql_query($myquery);

if ( ! $query ) {
    echo mysql_error();
    die;
}

$data = array();

for ($x = 0; $x < mysql_num_rows($query); $x++) {
    $data[] = mysql_fetch_assoc($query);
}

echo json_encode($data);  
include("linegraph.html");   

mysql_close($server);
?>

我的问题是那个折线图。html在使用选择表单之前工作得很好,但这一次,它只显示数据的输出。php,看起来像这样。

{"年":"1995","值":"0.525999"},{"年":"1996","值":"0.570037"},{"年":"1997","值":"0.563966"},{"年":"1998","值":"0.513896"},{"年":"1999","值":"0.5346"},{"年":"2000","值":"0.552691"},{"年":"2001","值":"0.545319"},{"年":"2004","值":"0.543972"},{"年":"2005","值":"0.543299"},{"年":"2006","值":"0.546682"},{"年":"2007","值":"0.550066"},{"年":"2008",:"2011","值":"0.547536"},{"年":"2012","值":"0.547536"}]

你能帮帮我吗。

共有1个答案

王才
2023-03-14

改变这个

include("linegraph.html");   

To(如果需要“include”来显示页面,那么最好使用require)

require("linegraph.html"); 

并在php的顶部添加

ini_set('display_errors', 1); 

您可能会发现页面丢失(打开错误报告后,至少您的生活会更轻松)

哦,把这部分也换一下,

for ($x = 0; $x < mysql_num_rows($query); $x++) {
    $data[] = mysql_fetch_assoc($query);
}

到这个

  $data = array();
   while ( false !== ( $row = mysql_fetch_assoc($query))){
       $data[] = $row;
   }

它可能无法解决您的问题(没有其他html页面很难做到),但它是执行此类循环的首选方式。

更新:在这里你不能像现在这样同时传递html和json(我刚刚意识到),你必须选择一个。你的问题是结构性的,因为你不能同时做两件事,json数据去哪里了,它只是漂浮在html之上?抱歉,但它不会像那样工作,要么你已经有了html并用返回的json数据填充它,要么你用已经在其中的数据构建html并将其发送回来。

更改此

echo json_encode($data);  
include("linegraph.html");

到(现在您正在发送有效的json/和html,但您必须在客户端组装它)

 ob_start();
 include("linegraph.html"); 
 $html = ob_get_clean();

$responce = array( 'data'=>$data, 'html'=>$html );
echo json_encode($responce);  

至少你的输出会改变。没有另一页,很难说如何(再次)做到这一点。

好的,,,,当我要求在底部回音时,你是这样做的吗?

echo json_encode($data);  
include("linegraph.html");
mysql_close($server);
echo "works";

?> //id remove this end tag it's not needed and can cause problems if there is space ( line returns ) after it.  Because it will make you json which you may or may not need invalid.

Oyyy。这是。。嗯

if ( ! $query ) {
    echo mysql_error();
    die;
}

你可以这样做。

if ( ! $query ) {
    die ('Query error' . mysql_error());
}
 类似资料:
  • 本文向大家介绍node.js从数据库获取数据,包括了node.js从数据库获取数据的使用技巧和注意事项,需要的朋友参考一下 本文需要用node.js做一个从Sqlserver获取数据并显示到页面上的小功能,下面就为大家分享: app.js: 接下来就直接在页面中使用get方式请求即可,当然post方式也是类似原理。 还有我发现textarea控件在改变其text和html属性的时候,value还保

  • 问题内容: 是否可以从Java创建MySQL数据库? 我只看过这样的连接URL示例,其中在URL中指定了数据库名称: 当我只有登录名和密码时,如何创建MySQL数据库? 问题答案: jdbc连接中不需要数据库,因此您可以执行以下建议的操作:http://forums.mysql.com/read.php?39,99321,102211#msg-102211和http://marc.info /?l

  • 我无法在/users/{uname}/token上获取令牌- 错误:提供给sendToDevice()的注册令牌必须是非空字符串或非空数组。在FirebaseMessagingeror。FirebaseError[作为构造函数](/srv/node_modules/firebase admin/lib/utils/error.js:42:28)位于FirebaseMessagingError。在新

  • 问题内容: 我有2种情况,我要在codeigniter中提取同一表的全部数据和行总数,我想知道那是一种方法,可以从中获取行总数,整个数据和3个最新插入的记录通过一个代码在同一张桌子上 两种情况的控制器代码如下(尽管我分别使用不同的参数将其应用于每种情况) 1)从codeigniter中的表中获取全部数据 型号代码 查看代码 2)在Codeigniter中从表中获取行数 查看代码 问题答案: 您只能

  • 问题内容: 我对数据库及其在CRUD操作之外提供的功能不是很熟悉。 我的研究使我 引人注目 。基本上,触发器似乎提供了这种类型的功能: (来自维基百科) 通常,有三个触发事件导致触发器“触发”: INSERT事件(将新记录插入数据库中)。 UPDATE事件(因为记录正在更改)。 DELETE事件(因为一条记录正在被删除)。 我的问题是:当使用某种触发语义对记录进行更新/删除/插入时,数据库是否可以

  • 问题内容: 我已经搜索了许多网站,但没有遇到任何从单个数据库获取表名的细节的代码或教程。 假设我有4个数据库,并且我想要数据库中所有表的名称,我可以使用什么查询? 问题答案: