首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPLOT中的图形查询

PHPLOT中的图形查询
EN

Stack Overflow用户
提问于 2014-09-10 18:56:42
回答 1查看 391关注 0票数 0

我正在尝试用phpplot做一个图形,我想按年份和月份对该时间内的所有注册用户进行分组,并将结果显示在图形中。

在数据库中是这样的:

代码语言:javascript
复制
id  | utilizador | registado
----+------------+--------------------
1   |   crisutu  | 2014-05-04 10:41:53
2   |   blabla   | 2014-05-15 04:45:24
3   |   hello    | 2014-06-15 04:45:24

我想在图中转换为2014年5月2日注册用户2014年6月1注册用户

代码语言:javascript
复制
<?php
#Incluimos a biblioteca
require("phplot-6.1.0/phplot.php");



#Definimos o objeto para inicar a "montagem" do gráfico
#Também delimitamos uma altura e largura do gráfico
$grafico = new PHPlot(750,600);

#Indicamos o formato de imagem a ser usado
$grafico->SetFileFormat("png");

#Indicamos o títul do gráfico e o título dos dados no eixo X e Y do mesmo
$grafico->SetTitle("NSMF");
$grafico->SetXTitle("Meses");
$grafico->SetYTitle("Utilizadores");


function getValues(){
  $db = new mysqli("xxxxxxxxx", "xxxxxxxxxxxx", "xxxxxxxxxxxxx", "xxxxxxxxx");
  $db->set_charset("utf8");
  $query = $db->query("SELECT COUNT(id),registado FROM utilizadores GROUP BY YEAR(registado), MONTH(registado) ");

  while($obj = $query->fetch_object()){

  $values[] = array($obj->id, $obj->id );

  }
  return $values;
  }

$dados = getValues();

$grafico->SetDataValues($dados);

#Exibimos o gráfico
$grafico->DrawGraph();
?>

你能帮我解决这个问题吗?告诉我哪里不对劲?

EN

回答 1

Stack Overflow用户

发布于 2014-09-10 19:48:49

下面是你在代码中犯的三个错误:

访问错误的对象属性

我确信您正在尝试访问fetched object的属性id,但该属性实际上是COUNT(id)。您可以考虑在查询中使用别名,例如:

代码语言:javascript
复制
SELECT COUNT(id) as id, registrado ...

错误的数据格式

默认情况下,PHPlot::setDataValues期望以下格式:

代码语言:javascript
复制
array(
    array('key1', 'value11', 'value12'),
    array('key2', 'value21', 'value22'),
    array('key3', 'value31', 'value32'),
)

在本例中,keys是月份,因此每个数组的第一个值必须是适当的月份,因此请编写$values[] = array($obj->registado, $obj->id );,而不是$values[] = array($obj->id, $obj->id );

日期格式化

最后,为了让日期以所需的格式显示,在为$value赋值时,请使用php function date (http://php.net/manual/en/function.date.php)。所以使用类似这样的东西:

代码语言:javascript
复制
$values[] = array(date("%F %Y", $obj->registado), $obj->id);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25763612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档