Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 13:16

Olá Pessoa.
Estou tentando criar uma melhor forma de mostrar uma opção de relatório. A primeira etapa é exibir as opções ANO e depois o MÊS, selecionando isso será possivel ver o relatório.

Eu tenho duas dabelas que representam:

Entrada: financ_receita

ID_FinanE --|-- id_cadastro --|-- nome --|-- tipo --|-- valor --|-- data


Ex: 1 1 Tiago Pereira Caus 1 50.00 2011-05-06 2 3 Pedro Henrique 1 33.33 2010-05-07

Saída: financ_despesa

ID_FinanS --|-- id_fornec --|-- nome --|-- tipo --|-- valor --|-- data


Ex: 1 1 Agua 1 75.00 2011-04-13 2 2 Luz 1 160.13 2010-04-20

Ambos os campos DATA estão no formado data 0000-00-00 ou seja Ano-Mes-Dia.

A ideia é exibir somente os anos que estão disponiveis em base do que tiver bas tabelas financ_receita e financ_despesa. Depois é exibir os meses disponiveis referente ao ano selecionado. Depois que selecionar o mês desejado ira para outra tela onde ira parecer todas as listagem que forem iguais ao ano selecionado e mês. Os dias não importa, só ira parecer no relatório.

Alguem poderia me ajudar a como fazer isso?

Obrigado.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

17-05-2011 14:08

O mais próximo para isso que pretende é relacionando as tabelas. Dessa forma, dá selecionar os dados iguais em ambas tabelas.

Consulta-com-comparacao-em-2-tabelas_33_783.html

MOVIDO: de PHP para MySQL
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 14:23

Estou tentando fazer isso, o que esta de errado?

$query_ano = "SELECT YEAR('data') as ano FROM financ_despesa, financ_receita";

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

17-05-2011 14:27

Seu objetivo é pegar somente o ano de uma data completa do banco de dados? Se for, faça assim:

SELECT outroscampos, YEAR(campodadata) AS novocampo FROM minhatabela
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 14:34

Sim, acredito que fazendo isso para o ano e depois para o mês eu consiga fazer o que preciso.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

17-05-2011 14:35

Acabei editando a última mensagem, olha acima.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 14:38

Estou fazendo assim, mas retorna vazio.

$query_ano = "SELECT YEAR('data') as ano FROM financ_despesa, financ_receita";

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

17-05-2011 14:40

Do campo data, retira as '', e se for obter dados de duas tabelas, tem que usar o método que indiquei naquele link acima. Fazendo a seleção dos campos das duas tabelas que irá precisar na consulta.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 14:49

Amigo, o tico e teco parou... não estou conseguindo finalizar... AFF...
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 14:54

Eu tenho que usar o WHERE? eu só quero mostrar os Anos da tabela financ_despesa, financ_receita juntas. Me ajuda... rsrs
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

17-05-2011 14:56

Então você quer pegar todos os anos de uma tabela, juntar com todos os anos de outra tabela, e listar tudo de uma vez?

Porque no caso você tem 2 anos, 2010 e 2011, então gostaria de fazer uma seleção e listar esses 2 anos na consulta, no caso os anos disponíveis com base no DISTINCT, para não repetir os anos.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 15:11

Exatamente. Com o passar dos anos iram aparecer mais [2010, 2011, 2012, ...,]. Então quero sempre mostrar o ano que tiver no Banco de dados. Somente um ano sem repetir como você disse.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

17-05-2011 15:24

Tenta o seguinte na sua query

(SELECT YEAR(financ_despesa.data) AS data1 FROM financ_despesa) UNION (SELECT YEAR(financ_receita.data) AS data1 FROM financ_receita)

Para exibir os valores no while, use o $data1
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 15:38

AMIGÃOOOOOOOOO.
Funcionou perfeitamente!!!!!!!!!!!!!!!

Primeira etapa esta feita, agora vou passar para o MÊS referente aquele ano selecionado. Por favor não feche o post.

Obrigado até o momento.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

17-05-2011 15:53

;)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 16:23

Amigo, agora lascou tudo de novo... como nunca fiz isso estou muito perdido. Fazer um consulta simples eu sei fazer, mas fazer um consulta de um determinado numero dentro de um campo ja não sei. Me desculpe ficar perguntando, perguntando, mas não sei a quem mais recorrer a não ser vocês.

Vou explicar os dois pontos finais que preciso fazer.

Graças a você temos o resultado do Ano pelo $data1.

Criei um form com jumpMenu:
<form action="financeiroFechamentoCaixaPasso2.php" method="post" name="form" id="form"> <strong>Selecione o ano: </strong> <select name="ano" id="ano" onchange="MM_jumpMenu('parent',this,0)"> <option value="">Selecione</option> <?php do { ?> <option value="<?php echo $row_ano['data1']?>"><?php echo $row_ano['data1']?></option> <?php } while ($row_ano = mysql_fetch_assoc($ano)); $rows = mysql_num_rows($ano); if($rows > 0) { mysql_data_seek($ano, 0); $row_ano = mysql_fetch_assoc($ano); } ?> </select> </form>

Ao selecionar o ano desejado, gostaria que fosse mostrado os meses que contem em todo o BD referente aquele ano em ordem crescente pelo mês. Quando a pessoa clicar sobre o link referente ao mês desejado vai mostrar a busca final que seja TUDO que tiver no banco de dados referente ao mês e ano selecionado. Mesmo no BD estando como YYYY-MM-DD, a busca ira se orientar somente pelo ano e mês e ira mostrar tudo.


"Estive pensando agora". Temos duas tabelas uma entrada e uma saida. Nessa ultima busca eu quero mostrar tudo que saiu e tudo que entrou e no final mostrar se o saldo ficou positivo ou negativo com as cores vermelhor e verde. Na listagem onde for saída mostrar o sinal de subtração "-", como um extrato bancário entende?

Pode me ajudar com mais essa?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

17-05-2011 16:54

O mês você vai obter normalmente

SELECT MONTH(data), outroscampos...

Ai você vai precisar adicionar um WHERE para obter somente o ano relacionado ao buscado

... FROM suatabela WHERE YEAR(data)='$anobuscado'
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

17-05-2011 17:14

Estou fazendo assim:
$anobuscado = $_POST['ano'];

$query_rs_mes = "SELECT MONTH(data) as data2 FROM financ_despesa, financ_receita WHERE YEAR(data)='$anobuscado' ";
Mas retorna esse erro:
Column 'data' in field list is ambiguous
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

17-05-2011 18:08

Você está buscando em uma tabela ou em duas? Porque dessa forma está correta

SELECT MONTH(campodadata) AS novadata FROM suatabela WHERE YEAR(campodadata)='$anobuscado'

Se for para as duas tabelas, tem que usar o UNION e adicionar o WHERE em ambas consultas.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

18-05-2011 09:40

Bom dia Amigo.

Olha, com sua ajuda consegui ontem fazer aparecer os meses, mas não conseguir fazer eles aparecerem em ordem crescente.

$query_rs_mes = "(SELECT MONTH(data) as data2 FROM financ_despesa WHERE YEAR(data)='$anobuscado' ORDER BY MONTH(data) ASC) UNION (SELECT MONTH(data) as data2 FROM financ_receita WHERE YEAR(data)='$anobuscado' ORDER BY MONTH(data) ASC)";

Para finalizar, estou tentando fazer aparecer o resultado final com a combinação do mês e ano. Eu tenho o resultado da seguinte forma: financeiroFechamentoCaixaVer.php?ano=2011&mes=4.

Esse resultado acredito que seja o mais chato, pois tem que mostrar das duas tabelas juntas (financ_despesa e financ_receita), lembrando que a tabela [financ_despesa.valor tem que subtrair] e a tabela [financ_receita.valor tem que somar]. A intenção era aparecer como um extrato bancário, na frete do valor da tabela financ_despesa aparecer o sinal de negativo para entender que foi uma valor que saiu do caixa.

Agradeço por tudo!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

18-05-2011 11:14

O ORDER BY parece estar correto, lembre-se que você está ordenando somente baseado no ano, se a ideia é basear em mês ou dia tem que especificar.

Você pode tentar algo como

ORDER BY YEAR(campodata) ASC, MONTH(campodata) ASC, etc...

Quanto a soma e subtração, acho melhor você chamar esses valores no próprio SELECT, e depois fazer os cálculos dentro do while.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

18-05-2011 11:18

Como assim tem que especificar o dia?
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

18-05-2011 11:50

Como assim tem que especificar o dia?

Mas não foi isso que eu fiz?

$query_rs_mes = "(SELECT MONTH(data) as data2 FROM financ_despesa WHERE YEAR(data)='$anobuscado' ORDER BY MONTH(data) ASC) UNION (SELECT MONTH(data) as data2 FROM financ_receita WHERE YEAR(data)='$anobuscado' ORDER BY MONTH(data) ASC)";

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Montagem de relatório banco de dados MySQL

18-05-2011 12:37

Se tem o valor

2011-05-10

Dependendo do que precise, você tem que ordenar primeiro pelo ano, depois pelo mês e em seguida pelo dia, como indiquei no exemplo acima.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 216

Montagem de relatório banco de dados MySQL

18-05-2011 15:22

Amigo, consegui fazendo dessa forma:
$query_rs_mes = "(SELECT MONTH(data) as data2 FROM financ_despesa WHERE YEAR(data)='$anobuscado') UNION (SELECT MONTH(data) as data2 FROM financ_receita WHERE YEAR(data)='$anobuscado') ORDER BY data2 ASC";

0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado