Ir ao conteúdo
  • Cadastre-se

Mahaus

Membros Juniores
  • Total de itens

    18
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

14

Informações gerais

  • Cidade e Estado
    São Paulo/SP
  • Sexo
    Masculino
  1. Mahaus

    PostgreSQL Criando relatorios com Postgre

    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"); ?>
  2. Mahaus

    PostgreSQL Criando relatorios com Postgre

    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"); ?>
  3. Boa tarde pessoal, o meu problema é o seguinte, meu note possui 3 portas USB, sendo 2 na direita e 1 na esquerda, a da esquerda funciona perfeitamente, porém as 2 da direita passam energia mas não reconhecem nem um dispositivo, já tentei desinstalar os drivers e reinstalar não funcionou. Será que está queimada, mesmo passando energia? meu note é um acer aspire v3-571, tentei entrar na bios para ver as opções de ativar as portas também, porém a bios não permite abrir a guia advanced. Queria ter certeza se está queimada para mandar para o conserto. obrigado pela atençao!!!
  4. É que ficou tão charmoso que me perdi olhando as outras linhas tentando entender kkk, como sempre esplêndido, muito obrigado pela ajuda fera. adicionado 11 minutos depois
  5. *Poderia me explicar o porque colocar essas linhas aqui na frente da definição das variaveis ( unsigned siz,int vet[siz],unsigned index[siz] ); porque unsigned? *Na declaração da biblioteca locale.h, utilizar LC_ALL e LC_CTYPE da no mesmo? *Porque você utilizou void na definiçao da funçao, daria no mesmo se utilizasse um int ou só ()? *É possível fazer isso sem utilizar funções? *Teria como você implementar isso no que eu já fiz pra mim entender melhor,tipo usando as variáveis q eu usei? sem querer abusar da sua paciência, mas já abusando rs Gente peço desculpas pela enrolação, mas é q tem tanta coisa q eu não sei ainda, e uma explicação sempre é bem vinda,mais uma vez agradeço a vcs que estão me ajudando. adicionado 5 minutos depois @giu_d A utilização de ponteiros ficaria meio complicada já que não entrei nesse assunto ainda, e o que seria struct?
  6. @giu_d Tenho que fazer o seguinte exercício. Escreva um programa em C que leia os valores de um vetor com 10 posições e exiba os valores em ordem crescente apresentando o índice correspondente do vetor ao lado da cada valor da lista ordenada. Eu já consegui ponhar em ordem crescente, porém os numeros digitados pelo usuario,agora falta ordenar os vetores, tipo vamos supor que vet[0] = 5, vet[1] = 3 e vet[2] = 8, eu teria que ponhar em ordem crescente mais carregar o indice do vetor junto, iria ficar assim no caso: vet[1] = 3, vet[0] = 5, vet[2] = 8, pelo que eu entendi, porém to perdido nessa parte. No exercicio fala pra usar ordenação de valores. #include <stdio.h> #include <conio.h> #include <locale.h> int main () { setlocale (LC_ALL,"Portuguese"); int vet[10],i,j,a; printf ("Entre com 10 números inteiros para carregar o vetor:\n"); for (i=0;i<10;i++) { scanf ("%d",&vet[i]); } for (i=0;i<10;i++) { for (j = i + 1; j < 10; j++) { if (vet[i] > vet[j]) { a = vet[i]; vet[i] = vet[j]; vet[j] = a; } } } printf ("\n----------Ordenando os valores dos vetores em ordem crescente---------\n\n"); for (i = 0; i < 10; i++) printf("vet[%d] - %d\n",i,vet[i]); return 0; }
  7. @giu_dCara desculpa demora pra responder, me ajudou pra caramba essa função que você fez, estou conseguindo compreender a lógica com sua explicação, valeu mesmo, queria fazer outra pergunta sobre um outro problema também em C,posso fazer aqui mesmo ou devo criar outro tópico?
  8. Escreva um programa em C que leia dois números (num1 e num2). A partir de um número gerado randomicamente entre 50 e 100 exiba uma série de num1 números, divisíveis por num2. Por exemplo, se for digitado 5 e 3, e o número randomico for 59, então a série exibida pelo programa deve ser: 60, 63, 66, 69 e 72 (5 números maiores que 59 e divisíveis por 3). #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> int main () { int num1,num2,numAleatorio; int i,j,divisao,resto=0; srand(time(NULL)); printf ("Digite o primeiro numero: "); scanf ("%d",&num1); printf ("\nDigite o segundo numero: "); scanf ("%d",&num2); // gerando número aleatório numAleatorio = (rand() % 49) + 51; printf ("\nNumero randomico: %d \n",numAleatorio); if ((num1!=0) && (num2!=0)) { for (i=0;i<num1;i++) { //não sei que condição colocar dentro do laço } } }
  9. @giu_d e se acaso eu quizesse gerar numero que nao comecem do 0 e 1,por exemplo que começasse do 3 ou 7 ou 50,qualquer outro numero que seja,como eu definiria isso? vou ver o video sim,pode deixar
  10. Nossa cara, as vezes acho q n sou capaz de conseguir terminar essa faculdade apesar de gostar do que faço, parece que vocês tem tanta facilidade,muito obrigado pela ajuda adicionado 20 minutos depois. adicionado 36 minutos depois @giu_d Poderia me explicar só mais uma coisa, por exemplo para gerar números de 0 a 100 é usado rand()%100, como %99+1 gera números de 1 a 99? e como eu faria para gerar números entre 50 e 100 ou 2 e 512? obrigado pela atençao novamente.
  11. obrigado pela ajuda, estou quebrando a cabeça aqui pra tentar resolver. Eu consegui somar linhas,porém apenas o total de todas, n o total de uma por uma, segue o q eu fiz #include <stdio.h> #include <time.h> #include <stdlib.h> int main() { int mat[6][6], i, j, numAleatorios; int soma,somal[6],somac[6]; srand(time(NULL)); // gera os números aleatórios e imprime a matriz for (i = 0; i < 6; i++) { for (j = 0; j < 6; j++) { numAleatorios = (rand() % 99) + 1; mat[i][j] = numAleatorios; printf("%3d | ", mat[i][j]); // %3d é para usar 3 casas para mostrar o número } printf("\n"); } printf("\n"); // soma das linhas for (i=0;i<6;i++) { for (j=0;j<6;j++) { soma = soma+mat[i][j]; } somal[i] = soma; } printf("Soma das linhas: %d \n", soma); return 0; }
  12. Então pessoal,meu professor passou o seguinte exercício: Desenvolva um programa que atribua em uma matriz quadrada de dimensão 6 valores aleatórios entre 0 e 100. Depois exiba os valores das células da matriz e mostre em cada final de linha a soma dos valores da linha e no final de cada coluna a soma dos valores de cada coluna. Os valores entre as colunas devem ser exibidos separados por sinal de | (pipeline). Eu n consegui entender essa parte: ''Depois exiba os valores das células da matriz e mostre em cada final de linha a soma dos valores da linha e no final de cada coluna a soma dos valores de cada coluna. Os valores entre as colunas devem ser exibidos separados por sinal de | (pipeline).'' Ficarei grato pela ajuda, o que eu consegui fazer até agora foi isso. #include <stdio.h> #include <conio.h> #include <stdlib.h> main () { int mat[6][6],lin,col,x; for (lin=0;lin<6;lin++) { for (col=0;col<6;col++) { mat[lin][col] = rand() % 100; printf ("mat[%d][%d] = %d \n",lin,col,mat[lin][col]); } } }
  13. eu n consegui achar a explicação,principalmente essa parte aqui if (posicao < tam / 2){ if (palavra[posicao] == palavra[tam - posicao - 1]){ return 1 * palindromo(palavra, tam, posicao+1); porque a variavel tam esta sendo dividida por 2? porque a posição menor q tam? n entendi nada dentro do if também
  14. Então pessoal, estou aprendendo sobre função e recursividade, queria que alguém me explicasse o exercício seguinte: O usuário entra com a palavra e o programa mostra se ela é uma palavra palíndroma (igual de trás pra frente, ex: arara) ou não, se sim,informar também se é palíndroma ímpar ou par. Eu completamente não entendi o exercício, preciso muito de ajuda pra entender,ficarei muito grato. #include <stdio.h> #include <string.h> #include <locale.h> // Função recursiva para verificar se a palavra é palíndromo int palindromo(char palavra[], int tam, int posicao) { if (posicao < tam / 2){ if (palavra[posicao] == palavra[tam - posicao - 1]){ return 1 * palindromo(palavra, tam, posicao+1); } else{ return 0; } } else{ return 1; } } int main() { setlocale (LC_ALL,"Portuguese"); char palavra[255]; int tam; printf ("Digite a palavra: \n"); gets(palavra); // Ler a palavra digitada pelo usuário tam = strlen(palavra); // Tamanho da palavra if (palindromo(palavra, tam, 0)) { if (tam%2==0) printf("É palíndromo par\n"); else printf("É palíndromo ímpar\n"); } else printf("Não é palíndromo\n"); return 0; }
  15. Ola pessoal,estou com dificuldade de resolver o seguinte exercicio: Faça a carga de "n" elementos em um vetor. E considere o seguinte raciocínio na hora da exibição: a) o número 555 funcionará como um interruptor. b)quando ele aparecer deverá interromper ou voltar a mostrar o conteúdo do vetor. Eu até consegui carregar o vetor com n elementos porém o problema esta na interrupção,quando o usuario digitar o numero 555,os seguintes param de exibir até o usuario digitar 555 de novo,ai ele volta exibir.porém o numero 555 n pode aparecer na hora de exibir os elementos(só servira como interruptor),queria saber se tem algum jeito mais fácil de fazer isso sem usar logica booleana,pois quebrei a cabeça com isso,sou iniciante em programação,valeu. adicionado 13 minutos depois

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

Aprenda_a_Ler_Resistores_e_Capacitores-capa-3d-newsletter.jpg

ebook grátis "Aprenda a ler resistores e capacitores", de Gabriel Torres

GRÁTIS! BAIXE AGORA MESMO!