Formatação de dados, de uma consulta no mysql para exibição no php
Boa tarde!
alguém sabe de alguma função ou alguma outra forma de eu recuperar os dados calculados no mysql, para que sejam exibidos corretamente no php?
O que acontece é que, fiz a seguinte consulta no mysql, e o mesmo me retorna os valores inteiros já calculados.
No entanto, ao realizar a consulta pelo php e pedir que o mesmo exiba os valores de 'valor', o mesmo mostra tudo 100. Não sei mais o que fazer pra tentar corrigir isso, creio que seja algo da formatação dos dados ( os valores calculados) ou algo assim.
Abaixo tem a parte do código em php:
e com o pre($result,__LINE__); ele mostra:
porem os valores deveriam ser 97 e 97 .
Se alguém tiver alguma sugestão de como resolver isso, agradeço.
alguém sabe de alguma função ou alguma outra forma de eu recuperar os dados calculados no mysql, para que sejam exibidos corretamente no php?
O que acontece é que, fiz a seguinte consulta no mysql, e o mesmo me retorna os valores inteiros já calculados.
SELECT filial as UF, DAY(data_entrega)AS DIA, FORMAT((SUM(if(Cumprimento ='Cumprido' ,1,0)) / SUM(if(Cumprimento in('Não Cumprido','Cumprido'),1,0))*100),0)as valor FROM tbl_entregas WHERE DATE( data_entrega) BETWEEN '2015-09-01' AND '2015-09-22' GROUP BY filialASC, DIA ASC
No entanto, ao realizar a consulta pelo php e pedir que o mesmo exiba os valores de 'valor', o mesmo mostra tudo 100. Não sei mais o que fazer pra tentar corrigir isso, creio que seja algo da formatação dos dados ( os valores calculados) ou algo assim.
Abaixo tem a parte do código em php:
$sql_painel_total = " SELECT filial as UF, DAY(data_entrega)AS DIA, FORMAT((SUM(if(Cumprimento ='Cumprido' ,1,0)) /SUM(if(Cumprimento in('Não Cumprido','Cumprido'),1,0))*100),0)as valor FROM tbl_entregas WHERE DATE( data_entrega) BETWEEN '" . $periodo_inicial . "' AND '" . $periodo_final . "' GROUP BY filial ASC, DIA ASC"; $query_painel_total = mysql_query($sql_painel_total) or die(error_msg( mysql_error(), $sql_painel_total, __LINE__ )); $painel_total = array(); while ( $result = mysql_fetch_assoc($query_painel_total) ) { pre($result,__LINE__); }
e com o pre($result,__LINE__); ele mostra:
Array ( [UF] => RS [DIA] => 1 [valor] => 100 ) linha: 42 Array ( [UF] => RS [DIA] => 2 [valor] => 100 )
porem os valores deveriam ser 97 e 97 .
Se alguém tiver alguma sugestão de como resolver isso, agradeço.
Gisely Santos
Curtidas 0
Respostas
William
23/09/2015
Se está chegando o valor "100" e o correto é "97" isso significa que é problema com arredondamento no cálculo, mas isso é no MySQL!
Dê uma olhada na documentação oficial para ver qual função matemática serve melhor para o seu caso https://dev.mysql.com/doc/refman/5.6/en/mathematical-functions.html.
Dê uma olhada na documentação oficial para ver qual função matemática serve melhor para o seu caso https://dev.mysql.com/doc/refman/5.6/en/mathematical-functions.html.
GOSTEI 0
Gisely Santos
23/09/2015
bom na verdade, olhando de uma outra forma aqui, no php, ele esta entendendo que tanto os 'cumpridos' quanto o total (cumprido + não cumprido) são o mesmo valor, e ai ele esta exibindo 100.
GOSTEI 0
Gisely Santos
23/09/2015
DE qualquer forma obrigada, já consegui resolver. Por estar sendo utilizado o mesmo critério nos dois if 'cumprido', creio que no php deve ter dado algum problema, enquanto que no mysql estava mostrando o resultado normal. A solução foi mudar o segundo if, colocando a expressão not in() e os demais critérios que não seriam utilizados para o calculo.
Obrigada.
Obrigada.
GOSTEI 0
Gisely Santos
23/09/2015
De qualquer forma obrigada, já consegui resolver. Por estar sendo utilizado o mesmo critério nos dois if 'cumprido', creio que no php deve ter dado algum problema, enquanto que no mysql estava mostrando o resultado normal. A solução foi mudar o segundo if, colocando a expressão not in() e os demais critérios que não seriam utilizados para o calculo.
Obrigada.
Obrigada.
GOSTEI 0
Gisely Santos
23/09/2015
De qualquer forma obrigada, já consegui resolver. Por estar sendo utilizado o mesmo critério nos dois if 'cumprido', creio que no php deve ter dado algum problema, enquanto que no mysql estava mostrando o resultado normal. A solução foi mudar o segundo if, colocando a expressão not in() e os demais critérios que não seriam utilizados para o calculo.
Obrigada.
Obrigada.
GOSTEI 0
William
23/09/2015
OK, finalizando o tópico!
GOSTEI 0