Jump to content
Sign in to follow this  
Umbus

Graficos

Recommended Posts

Umbus

Alguem usa o Lichart?

Eu tenho o seguinte:

<?php include "libchart/libchart/classes/libchart.php";
$querycom = "SELECT * FROM comentarios ORDER BY data asc";
$resultadocom = mysql_query($querycom) or die("Erro na query: $query. " .mysql_error()) ;
$contarcom = mysql_num_rows($resultadocom);
	$chart = new LineChart();
$dataSet = new XYDataSet();

        while ($registoscom = mysql_fetch_array($resultadocom)){
      $dataSet->addPoint(new Point($registoscom['ano'], $registoscom['voto']));
}

$chart->setDataSet($dataSet);
        $chart->setTitle("Ranking da personalidade ".$registos['nome']);
        $chart->render("graficos/".$registos['nome'].".png");

          ?>
            <img alt="Line chart" src="graficos/<? echo $registos['nome'];?>.png" style="border: 1px solid gray;"/>
	 <?

Mas o problema é que fica assim:

testeg.png

O que quero é que os anos fiquem todos juntos, e que os valores sejam a media dos valores desse ano. Como faço?


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Experimenta alterar:

# Esta linha:
$querycom = "SELECT * FROM comentarios ORDER BY data asc";

# Por esta:
$querycount = "SELECT COUNT(id) as total FROM comentarios";
$result = @mysql_query($querycount);
$total = mysql_fetch_object($result);
$querycom = "SELECT comentarios.*, (COUNT(DISTINCT comentarios.id)/{$total->total}) as media FROM comentarios GROUP BY YEAR(ano) ORDER BY data asc";

# -- E mais à frente, esta:
$dataSet->addPoint(new Point($registoscom['ano'], $registoscom['voto']));

# -- Por esta:
$dataSet->addPoint(new Point($registoscom['ano'], $registoscom['media']));

Share this post


Link to post
Share on other sites
Umbus

Mas assim ele nao vai contar todos os dados da base de dados?

E que na base de dados por ter por exemplo:

Ano 2010 voto 1

Ano 2010 voto 5

Ano 2011 voto 5

Muito obrigado pela ajuda ;)

Edit: Não está a funcionar alguma coisa esta mal?

$querycount = "SELECT COUNT(id) as total FROM comentarios";
$result = @mysql_query($querycount);
$total = mysql_fetch_object($result);
$querycom = "SELECT comentarios.*, (COUNT(DISTINCT comentarios.id)/{$total->total}) as media FROM comentarios GROUP BY YEAR(ano) ORDER BY data asc";
$resultcom = @mysql_query($querycom);
	$chart = new LineChart();
$dataSet = new XYDataSet();
while ($registoscom = mysql_fetch_array($resultcom)){
$dataSet->addPoint(new Point($registoscom['ano'], $registoscom['media']));
}
$chart->setDataSet($dataSet);


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Ups big fail ;)

Podes apagar esta parte:

$querycount = "SELECT COUNT(id) as total FROM comentarios";
$result = @mysql_query($querycount);
$total = mysql_fetch_object($result);

E alterar a query para:

$querycom = "SELECT comentarios.*, (SUM(comentarios.voto)/COUNT(DISTINCT comentarios.id) as media FROM comentarios GROUP BY YEAR(ano) ORDER BY data asc";

Resumidamente o que a query faz é, agrupar por ano, e somar os votos que teve (nesse ano) (5+5+1+5+3+5 = 24) e divide pelo numero de votos totais desse ano (6 votos) ... fazendo (24 / 6 = 4) a média de votos nesse ano.

:) Penso que é isto não?

Share this post


Link to post
Share on other sites
Umbus

Antes de mais muito obrigado pela ajuda. É isso mesmo mas esta a dar erro o que tenho é isto:

 $query = "SELECT * FROM personalidades ORDER BY nome asc";
$resultado = mysql_query($query) or die("Erro na query: $query. " .mysql_error()) ;
$contar = mysql_num_rows($resultado);
$registos = mysql_fetch_array($resultado);
$querycom = "SELECT comentarios.*, (SUM(comentarios.voto)/COUNT(DISTINCT comentarios.id) as media FROM comentarios GROUP BY YEAR(ano) ORDER BY data asc";
$resultcom = @mysql_query($querycom);
	$chart = new LineChart();
$dataSet = new XYDataSet();
while ($registoscom = mysql_fetch_array($resultcom)){
$dataSet->addPoint(new Point($registoscom['ano'], $registoscom['media']));
}

E agora tenho este erro:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/xtechptc/public_html/tfc/comentario.php on line 60

O que está mal, eu nao conhecia esse método de fazer coisas logo no sql :P . Boas dicas


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Antes de mais muito obrigado pela ajuda. É isso mesmo mas esta a dar erro o que tenho é isto:

 $query = "SELECT * FROM personalidades ORDER BY nome asc";
$resultado = mysql_query($query) or die("Erro na query: $query. " .mysql_error()) ;
$contar = mysql_num_rows($resultado);
$registos = mysql_fetch_array($resultado);
$querycom = "SELECT comentarios.*, (SUM(comentarios.voto)/COUNT(DISTINCT comentarios.id) as media FROM comentarios GROUP BY YEAR(ano) ORDER BY data asc";
$resultcom = @mysql_query($querycom);
	$chart = new LineChart();
$dataSet = new XYDataSet();
while ($registoscom = mysql_fetch_array($resultcom)){
$dataSet->addPoint(new Point($registoscom['ano'], $registoscom['media']));
}

E agora tenho este erro:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/xtechptc/public_html/tfc/comentario.php on line 60

O que está mal, eu nao conhecia esse método de fazer coisas logo no sql :P . Boas dicas

Provavelmente será mesmo a query que estará mal.... Após testar, sugiro a seguinte alteração para:

$querycom = "SELECT comentarios.*, (SUM(comentarios.voto)/COUNT(DISTINCT comentarios.id)) as media FROM comentarios GROUP BY ano ORDER BY ano asc";

A alteração é simples, faltava um parentesis na media e tirei o YEAR(ano)... porque o campo ano deverá ser um inteiro com o ano, logo nao precisas de usar a função YEAR, certo?...Por fim, pus a agrupar por ano porque deve ser essa a ideia :D

Share this post


Link to post
Share on other sites
Umbus

Sim é exactamente isso, muitíssimo obrigado :) . Devo-te uma :P


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.