Ir ao conteúdo

Posts recomendados

Postado

Boa tarde pessoal, tenho que desenvolver um trabalho de BD, onde tenho que gerar 2 relatorios sobre minha base de dados que responda a seguinte pergunta:

A partir de dados de entrada com um intervalo de datas, quais clientes compraram todos os produtos no período entre as datas (intervalo fechado)?

Isso foi o que eu fiz, porém está dando os seguintes erros e não consegui resolver, alguem q entenda poderia me ajudar por favor.

 

Notice: Undefined index: pknfvendasitens in C:\xampp\htdocs\fnts\relatorio01.php on line 57
Notice: Undefined index: fkcliente in C:\xampp\htdocs\fnts\relatorio01.php on line 58
Notice: Undefined index: fkproduto in C:\xampp\htdocs\fnts\relatorio01.php on line 59
Notice: Undefined index: qtdvendida in C:\xampp\htdocs\fnts\relatorio01.php on line 60
Notice: Undefined index: dtvenda in C:\xampp\htdocs\fnts\relatorio01.php on line 61

<?php
# Um PRG Recursivo usa um conceito de lógica de programação para diminuir a quantidade de arquivos abertos no mesmo diretório.
# No PHP, usa-se uma função de ambiente para construção de Prgs. Recursivos.
# ISSERT() retorna True/False para a existencia de valor em uma variável.
# então uma variável de nome bloco pode ser avaliada e a partir de seu valor decide-se
# qual bloco de comandos será executado.
$bloco=( ISSET($_POST['bloco']) ) ? $_POST['bloco'] : 1;
print("<html>\n<body>\n\n");
switch (TRUE)
{
  case ( $bloco==1 ):
  { # Este bloco será executado na primeira 'rodada' do programa
    # Aqui monta-se o form e deve-se passar o valor de bloco para 2 em modo oculto
    printf("<form action='./relatorio01.php' method='POST'>\n");
    printf("<input type='hidden' name='bloco' value=2>\n");
    printf("Data inicio:   <input type='date' name='dtini' <br>\n");
    printf("Data termino:  <input type='date' name='dtfim' <br>\n");
    printf("<input type='submit' name='acao' value='Enviar'>\n");
    printf("</form>\n");
    break;
  }
  case ( $bloco==2 ):
  { # Aqui se executa a construção do relatório.
    # conectando ao bd
    # Conectando o SGBD POSTGRSQL
    $host='localhost';
    $porta='5432';
    $dbname='lbd2019noite';
    $user='postgres';
    $senha='postgres';
    $string="host='".$host."' port=".$porta." dbname='".$dbname."' user='".$user."' password='".$senha."'";;
    $linkpg=pg_connect($string) or die ("Problemas para conectart ao BD");

    # Montando o comando que exeuta as junções e seleção de dados das tabelas envolvidas.
    $cmdsql="SELECT l.txnomeprod,
                    c.txnomecliente

                    FROM nfvendasitens as d inner join nfvendas as f ON d.fknfvenda=f.pknfvenda
                                            inner join produtos as l on d.fkproduto=l.pkproduto
                                            inner join clientes as c on f.fkcliente=c.pkcliente
                    WHERE dtvenda BETWEEN '$_REQUEST[dtini]' AND '$_REQUEST[dtfim]'
                    GROUP BY f.fkcliente, c.txnomecliente, d.fkproduto, l.txnomeprod, d.qtvendida
                    ORDER BY f.fkcliente, c.txnomecliente, d.fkproduto, l.txnomeprod, d.qtvendida";

    # executando a variável
    $execsql=pg_query($linkpg,$cmdsql);
     printf("<table border=1>\n");
    printf("<tr><td>Cliente</td>
                <td>Produto</td>
                <td>Quantidade</td>
                <td>Dt Venda</td></tr>\n");

     WHILE ( $reg=pg_fetch_array($execsql) )
     { # exibindo os dados de medicos
       printf(   
              "<tr> 
                <td>$reg[pknfvendasitens]</td>
                <td>$reg[fkcliente]-$reg[txnomecliente]</td>
                <tr><td>$reg[fkproduto]-$reg[txnomeprod]</td>
                <td>$reg[qtdvendida]</td>
                <td>$reg[dtvenda]</td>
              </tr>\n");
     }
     printf("</table>\n");


    break;
  }
}
print("</body>\n</html>\n");

?>

 

Postado

Consegui arrumar tudo pessoal, agora preciso fazer o seguinte, tenho duas colunas, uma q mostra a quantidade de produtos, e outra o preço, preciso criar uma outra linha com nome total e nessa linha exibir o total da coluna quantidade de produtos e o total de preço. Segue o codigo:

<?php
# Um PRG Recursivo usa um conceito de lógica de programação para diminuir a quantidade de arquivos abertos no mesmo diretório.
# No PHP, usa-se uma função de ambiente para construção de Prgs. Recursivos.
# ISSERT() retorna True/False para a existencia de valor em uma variável.
# então uma variável de nome bloco pode ser avaliada e a partir de seu valor decide-se
# qual bloco de comandos será executado.
$bloco=( ISSET($_POST['bloco']) ) ? $_POST['bloco'] : 1;
print("<html>\n<body>\n\n");
switch (TRUE)
{
  case ( $bloco==1 ):
  { # Este bloco será executado na primeira 'rodada' do programa
    # Aqui monta-se o form e deve-se passar o valor de bloco para 2 em modo oculto
    printf("<form action='./relatorio02.php' method='POST'>\n");
    printf("<input type='hidden' name='bloco' value=2>\n");
    printf("Data inicio:   <input type='date' name='dtini' <br>\n");
    printf("Data termino:  <input type='date' name='dtfim' <br>\n");
    printf("<input type='submit' name='acao' value='Enviar'>\n");
    printf("</form>\n");
    break;
  }
  case ( $bloco==2 ):
  { # Aqui se executa a construção do relatório.
    # conectando ao bd
    # Conectando o SGBD POSTGRSQL
    $host='localhost';
    $porta='5432';
    $dbname='lbd2019noite';
    $user='postgres';
    $senha='postgres';
    $string="host='".$host."' port=".$porta." dbname='".$dbname."' user='".$user."' password='".$senha."'";;
    $linkpg=pg_connect($string) or die ("Problemas para conectart ao BD");

    # Montando o comando que exeuta as junções e seleção de dados das tabelas envolvidas.
    $cmdsql="SELECT d.fkcliente,
                    l.txnomeprod,
                    c.txnomecliente,
                    f.pknfvendasitens,
                    SUM (f.qtvendida) as totqtd,
                    SUM (l.vlpreco) as totpreco,
                    d.dtvenda

                    FROM nfvendas as d inner join nfvendasitens as f ON d.pknfvenda=f.fknfvenda
                                            inner join produtos as l on f.fkproduto=l.pkproduto
                                            inner join clientes as c on d.fkcliente=c.pkcliente
                    WHERE dtvenda BETWEEN '$_REQUEST[dtini]' AND '$_REQUEST[dtfim]'
                    GROUP BY f.pknfvendasitens, d.fkcliente, c.txnomecliente, f.fkproduto, l.txnomeprod, f.qtvendida, d.dtvenda, l.vlpreco
                    ORDER BY f.pknfvendasitens, d.fkcliente, c.txnomecliente, f.fkproduto, l.txnomeprod, f.qtvendida, d.dtvenda, l.vlpreco";

    # executando a variável
    $execsql=pg_query($linkpg,$cmdsql);
     printf("<table border=1>\n");
    printf("<tr><td>Código da N.F.</td>
                <td>Cliente</td>
                <td>Produto</td>
                <td>Quantidade</td>
                <td>Preço</td>
                <td>Dt Venda</td></tr>\n");



     WHILE ( $reg=pg_fetch_array($execsql) )
     { # exibindo os dados de medicos

       printf("<tr><td>$reg[pknfvendasitens]</td>
                   <td>$reg[fkcliente]-$reg[txnomecliente]</td>
                   <td>$reg[txnomeprod]</td>
                   <td>$reg[totqtd]</td>
                   <td>$reg[totpreco]</td>
                   <td>$reg[dtvenda]</td></tr>\n");
     }
     printf("</table>\n");
      break;
  }
}
print("</body>\n</html>\n");

?>

 

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