Formatação de dados, de uma consulta no mysql para exibição no php

23/09/2015

0

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.
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

Gisely Santos

Responder

Posts

23/09/2015

William

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.
Responder

23/09/2015

Gisely Santos

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.
Responder

23/09/2015

Gisely Santos

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.
Responder

23/09/2015

Gisely Santos

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.
Responder

23/09/2015

Gisely Santos

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.
Responder

23/09/2015

William

OK, finalizando o tópico!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar