Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

gregurs

Erro ao gerar grafico no php

Mensagens Recomendadas

gregurs

Bom dia pessoal, tenho este código para gerar um gráfico e tenho este erro

Notice: Undefined variable: volume_cat in C:\Documents and Settings\Hugo\Ambiente de trabalho\xampp-win32-1.8.1-VC9\htdocs\site\teste.php on line 38 JpGraph Error: 15009 Illegal pie plot. Sum of all data is zero for Pie Plot

o meu código é este:Podem me ajudar?

<?php

include_once ("jpgraph/src/jpgraph.php");
include_once ("jpgraph/src/jpgraph_pie.php");
include_once ("jpgraph/src/jpgraph_pie3d.php");

$username = "root";
$password = "root";
$hostname = "localhost";

$dbhandle = mysql_connect("localhost","root","") or die("Could not connect to database");

$selected = mysql_select_db("bdd", $dbhandle);

$res_vendas = "Select indicador AS numero From indicador Where indicador = 'Res. Liq. das Vendas'";
$Vol_negocio = "Select indicador AS numero From indicador Where indicador = 'Volume de negócio'";
$Vres_vendas_cat = "Select indicador AS numero From indicador Where indicador = 'Res. Liq. Vendas por categoria artigo'";
$rent_vendas = "Select indicador AS numero From indicador Where indicador = 'Rentabilidade das Vendas'";
$Vol_neg_cat = "Select indicador AS numero From indicador Where indicador = 'Volume de Negócio Vendas p\Categoria de Artigos'";

$vendas = mysql_query($res_vendas);
$negocio = mysql_query($Vol_negocio);
$vendas_cat = mysql_query($Vres_vendas_cat);
$rentabilidade = mysql_query($rent_vendas);
$negocio_cat = mysql_query($Vol_neg_cat);

while($result_vend = mysql_fetch_array($vendas))
{ $resultadoliqvendas = $result_vend['numero'];
}while($result_vol_neg = mysql_fetch_array($negocio)){
$volume_neg = $result_vol_neg['numero'];
}while($result_res_cat = mysql_fetch_array($vendas_cat)){
$resultadoliqvendascat = $result_res_cat['numero'];
}while($result_rent = mysql_fetch_array($rentabilidade)){
$rentvendas = $result_rent['numero'];
}while($result_vol_cat = mysql_fetch_array($negocio_cat)){
$volume_cat = $result_vol_cat['numero'];
}
$data = array( $resultadoliqvendas, $volume_neg, $resultadoliqvendascat, $rentvendas, $volume_cat);

$graph = new PieGraph(410, 310,"auto");
$graph->SetShadow();
$graph->title->Set("Wireless Encryption Schemes in Dublin, Ireland");
$graph->title->SetFont(FF_FONT1,FS_BOLD);

$p1 = new PiePlot3D($data);  
$p1->SetSize("");
$p1->SetCenter(0.45);
$p1->SetStartAngle(300);  
$p1->SetAngle(45);
$p1->SetTheme('earth');

$p1->value->SetFont(FF_FONT1,FS_BOLD);
$p1->SetLabelType(PIE_VALUE_PER);  

$legends = array('None','WEP','WPA');

$p1->SetLegends($legends);



$a = array_search(max($data),$data); //Find the position of  maixum value.
$p1->ExplodeSlice($a);

$graph->Add($p1);
$graph->Stroke();

?>

Editado por yoda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Aonde é que está a linha 38?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Bom dia pessoal, tenho este código para gerar um gráfico e tenho este erro

não é um erro, é simplesmente um notice ...

Aonde é que está a linha 38?

uma pesquisa pela palavra que dá o Notice (volume_cat) dá para perceber que o problema só pode ser numa linha :

while($result_vol_cat = mysql_fetch_array($negocio_cat)){
 $volume_cat = $result_vol_cat['numero'];
}

// linha seguinte dá o notice
$data = array( $resultadoliqvendas, $volume_neg, $resultadoliqvendascat, $rentvendas, $volume_cat);

se dá notice na linha apresentada é porque o ciclo anterior nunca foi executado.

verifica se o query foi bem executado e/ou a sua execução retornou, pelo menos, um registo


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gregurs

Agora dá me estes erros(linhas dos while) acho que ele está a ir buscar o id da linha e não o indicador

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Documents and Settings\Hugo\Ambiente de trabalho\xampp-win32-1.8.1-VC9\htdocs\site\testar.php on line 28

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Documents and Settings\Hugo\Ambiente de trabalho\xampp-win32-1.8.1-VC9\htdocs\site\testar.php on line 33

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Documents and Settings\Hugo\Ambiente de trabalho\xampp-win32-1.8.1-VC9\htdocs\site\testar.php on line 37

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Documents and Settings\Hugo\Ambiente de trabalho\xampp-win32-1.8.1-VC9\htdocs\site\testar.php on line 41

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Documents and Settings\Hugo\Ambiente de trabalho\xampp-win32-1.8.1-VC9\htdocs\site\testar.php on line 45

Editado por gregurs

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

verifica se tens a ligação à base de dados a ser feita correctamente

Mm assim, de qq modo, mostra o erro usando a função para esse efeito e livra-te das funções mysql_* usa o mysqli ou o PDO.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
t0ze

OFF TOPIC:

Se no meu código substituir todos os mysql_fetch_array, mysql_query... por mysqli_query, mysqli_fecth ...

não vão haver erros?

Mm assim, de qq modo, mostra o erro usando a função para esse efeito e livra-te das funções mysql_* usa o mysqli ou o PDO.
Editado por t0ze

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

OFF TOPIC:

Se no meu código substituir todos os mysql_fetch_array, mysql_query... por mysqli_query, mysqli_fecth ...

não vão haver erros?

a conversão não é directa ... mas não deixa de ser semelhante

  • Voto 1

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
gregurs

Boas mudei de libraria em vez do jpgraph utilizei a phpgraphlib tenho agora este código não dá erro aparece a img no canto superior esquerdo do browser não o gráfico

<?php
include("graph\phpgraphlib.php");
// include("graph\phpgraphlib_pie.php");

$graph=new PHPGraphLib(550,350);

$link = mysql_connect('localhost', 'username', 'password')
  or die('Could not connect: ' . mysql_error());

mysql_select_db('bscfin') or die('Could not select database');

$dataArray=array();

//get data from database
$sql="SELECT ano, resultado AS 'count' FROM valores GROUP BY ano";
$result = mysql_query($sql) or die('Query failed: ' . mysql_error());
if ($result) {
 while ($row = mysql_fetch_assoc($result)) {
  $dated=$row['ano'];
//  $dated = strtoint($dated)
 // $count=$row["count"];
  //add to data areray
  $dataArray[$dated] = $row['resultado'];


 }
}

//configure graph
$graph->addData($dataArray);
$graph->setTitle("Resultados das vendas");
$graph->setGradient("lime", "green");
$graph->setBarOutlineColor("black");
$graph->createGraph();
?>

<html>
<h3>This is where I want to display my graph</h3>
<img src="tt.php" />
</html>

Editado por yoda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Já agora:

Usa mysqli ou o PDO, não uses as funções mysql_*.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.