Ir ao conteúdo

Posts recomendados

Postado

Olá boa tarde,

 

Tenho um código em meu site que soma o  faturamento de cada mês, porém quando muda o ano ele continuando somando os meses do ano anterior, por exemplo: no mês de janeiro de 2021 faturei R$ 1000 (ao total já somando tudo) e no ano de 2022 no mês de janeiro faturei R$ 2000 ou seja pra mim tem q aparecer R$ 2000 ao invés disso ele esta somando o mês de janeiro de 2021 com o de 2022 ou seja o valor total fica R$ 3000. Eu queria que somasse de cada ano 

 

 

 <?php
                                                        $mesMost = date('m');
                                                        $conn = mysqli_connect('localhost','praticalimp_sistema','0OC_q(yfP]&0','praticalimp_sistema');
                                                        $resultado = mysqli_query($conn, "SELECT SUM(lucro) AS total, MONTH(mes) AS mes FROM clientes WHERE MONTH(mes) = $mesMost; ");
                                                        $linhas = mysqli_num_rows($resultado);
                                                        while($linhas = mysqli_fetch_array($resultado)){
                                                            $resultTotal3 = $linhas['total'].'<br/>';
                                                            echo htmlentities(number_format($resultTotal3,0,",","."));     
                                                                ?> faturamento
                                                    
                                                                <?php
                                                            }
                                                    ?>

 

Desde já muito obrigado

  • Moderador
Postado

@vinissant7 Olá,  estou um pouco enferrujado no PHP, mas que tal você adicionar mais uma clausula ali no seu select, por exemplo  "AND YEAR(ano)" 

 

NO php , você adiciona uma variável como

$ano =  date("Y"); 

Isso força você  calcular no ano atual...  mas pode causar problemas, se você quer manter um registro de anos anteriores. Aí nesse caso... seria interessante criar uma nova tabela para separar as consultas.  Bem.. existem N soluções.. essa é apenas uma delas.. e pode nem ser a melhor escolha!

  • Obrigado 1
Postado

@DiFTentei usar o "AND YEAR(ano)", porém quando eu coloquei ele a soma some e não mostra nenhum erro. Poderia me ajudar? Desde já obrigado
 

 <?php
                                                        $mesMost = date('m');
                                                        $conn = mysqli_connect('localhost','praticalimp_sistema','0OC_q(yfP]&0','praticalimp_sistema');
                                                        $resultado = mysqli_query($conn, "SELECT SUM(lucro) AS total, MONTH(mes) AS mes AND YEAR(mes) AS ano FROM clientes WHERE MONTH(mes) = $mesMost; YEAR(ano) = 2022;");
                                                        $linhas = mysqli_num_rows($resultado);
                                                        while($linhas = mysqli_fetch_array($resultado)){
                                                            $resultTotal3 = $linhas['total'].'<br/>';
                                                            echo htmlentities(number_format($resultTotal3,0,",","."));     
                                                                ?>,00
                                                    
                                                                <?php
                                                            }
                                                    ?>

 

 

  • Moderador
Postado

@vinissant7

Como eu disse anteriormente, estou um pouco enferrujado no php e sql.. mas vamos lá.. 

Talvez a sua instrução esteja errada.

Você colocou o and year dentro no lugar errado, era pra ser na parte do where. 

 

Mas talvez, seria interessante, fazer o group by por ano e mês. 

Isso partido da premissa que você armazena na tabela uma data completa.

 

Um exemplo seria:

GROUP BY YEAR(data), MONTH(data)

 

Explico melhor.

Partindo da premissa que você tem a tabela assim:

 

id	lucro	data
1	1200    2021-11-02
2	200	2021-11-12
3	800	2021-11-21
4	100	2021-12-01
5	234	2021-12-10
6	600	2022-01-01
7	500	2022-01-10
8	1000	2022-02-01
9	3000	2022-02-04

 

Você quer extrair daí a soma dos lucros de acordo com o mês e ano.

 

Veja que existem dados com várias datas diferentes com dias e anos diferentes.. porém você quer a soma deles..  nesse caso você precisa primeiro agrupar os meses e anos.

A sintaxe fica:

 

SELECT SUM(lucro) as total , MONTHNAME(data), YEAR(data)
FROM clientes
GROUP BY YEAR(data), MONTH(data)

 

Aqui tem um print mostrando a tabela, a consulta e o resultado:

spacer.png

 

Repare na imagem que no resultado, Ele ignorou os "dias" e agrupou  e somou o lucro dos meses 

Como podes ver, o mês de novembro de 2021, a pessoa teve um lucro de 2200, porque tinha registrado que dia 2 tinha 1200, dia 12 tinha 200 e dia 21 tinha 800.

Em fevereiro de 2022, o cara teve 1000 no dia primeiro e mais 3000 no dia 4.. então somando deu 4000.

 

Acho que era isso que você queria. 

Analisando agora, acho que no seu php tem coisas demais.

To meio enferrujado, mas nada como uma breve pesquisa pra lembrar das coisas rsrs 

  • 4 semanas depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!