查询PHPLOT中的图形

时间:2014-09-10 10:56:42

标签: php select graphics group-by phplot

我试图在phpplot中创建一个图形,我希望按年份对所有注册用户进行分组,然后显示结果图形。

在数据库中是这样的:

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

我想像May 2014那样转换图形 - 2注册用户2014年6月 - 1注册用户

<?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();
?>

你能帮我解决这个问题吗?告诉我出了什么问题?

1 个答案:

答案 0 :(得分:0)

因此,您在代码中犯了三个错误:

访问对象的错误属性

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

SELECT COUNT(id) as id, registrado ...

数据格式错误

默认情况下PHPlot::setDataValues需要以下格式:

array(
    array('key1', 'value11', 'value12'),
    array('key2', 'value21', 'value22'),
    array('key3', 'value31', 'value32'),
)

在你的情况下key是几个月,所以每个数组的第一个值必须是适当的月份,所以写$values[] = array($obj->registado, $obj->id );,而不是$values[] = array($obj->id, $obj->id );

日期格式化

最后,当您将日期显示为所需格式时,请在为date指定值时使用php函数$valuehttp://php.net/manual/en/function.date.php)。所以使用这样的东西:

$values[] = array(date("%F %Y", $obj->registado), $obj->id);