Jump to content

Luciano-web

Members
  • Content count

    3
  • Joined

  • Last visited

Community Reputation

0 Comum

About Luciano-web

  1. Luciano-web

    Cadastrar em "lote" no banco MySQL

    Obrigado Maykel Na verdade eu descobri o que estava acontecendo... <?php require ("../conexao.php"); // conecta com o banco de dados $mes = $_POST['mes_mensalidade']; // recebe o valor do formulário para cadastrar o mês $sql = "SELECT * FROM aluno WHERE id_status = 1;"; // seleciona todos os alunos que estão ativos $result = $conn->query($sql); // faz a consulta no banco de dados while ($row = $result->fetch_array()){ // enquanto tiver linhas a serem consultadas faz... $sql = "INSERT INTO pagamento (aluno_pagamento, mes_pagamento, status_pagamento) VALUES (".$row['id_aluno'].",".$mes.",0);"; // insere na tabela pagamento os dados dos alunos $cadastrar = $conn->query($sql); // faz a inserção } } if (($conn->query($sql)==TRUE) AND ($cadastrar)){ // testa se as duas "query's" foram executadas header('Location: ../formularioCadastroMensalidades.php?msg=27'); // redireciona para a página de "OK" }else{ echo $conn->error; // se não der certo, escreve o erro } $conn->close(); // fecha a conexão ?> -> na linha que eu destaquei em laranja, acontecia o cadastramento de todas as mensalidades -> no IF, onde está testando o $cadastrar, o sistema fazia novamente o cadastro no banco da última linha que estava na memória Consegui resolver o problema apenas retirando o $cadastrar do IF, mas eu queria um teste para saber se todos foram cadastrados para aí sim redirecionar a página, mas como é um trabalho de faculdade não vou me preocupar com isso. Mesmo assim, obrigado Ps.: na verdade, tenho que testar se as $conn->query($sql) estão sendo executadas corretamente, para isso tenho que mudar a 2ª $sql para outro nome e testar ela no IF também
  2. Luciano-web

    Cadastrar em "lote" no banco MySQL

    Boa Madrugada pessoal, Estou com um problema em cadastrar em "lote" no banco de dados. Sou iniciante em PHP+MySQL e estou tentando cadastrar na tabela do banco de dados "pagamento" a mensalidade de todos os alunos com uma $query apenas: Recebo de um formulário o MÊS que precisa ser cadastrada a mensalidade e tem que fazer um teste se o ALUNO não está desativado (ou seja, paralisou as aulas e não pode ser cobrado por isso). Nesse código, gera uma mensalidade para cada aluno cadastrado no sistema com status "ativo" . aqui está o código do cadastro: <?php require ("../conexao.php"); // conecta com o banco de dados $mes = $_POST['mes_mensalidade']; // recebe o valor do formulário para cadastrar o mês $sql = "SELECT * FROM aluno WHERE id_status = 1;"; // seleciona todos os alunos que estão ativos $result = $conn->query($sql); // faz a consulta no banco de dados while ($row = $result->fetch_array()){ // enquanto tiver linhas a serem consultadas faz... $sql = "INSERT INTO pagamento (aluno_pagamento, mes_pagamento, status_pagamento) VALUES (".$row['id_aluno'].",".$mes.",0);"; // insere na tabela pagamento os dados dos alunos $cadastrar = $conn->query($sql); // faz a inserção } } if (($conn->query($sql)==TRUE) AND ($cadastrar)){ // testa se as duas "query's" foram executadas header('Location: ../formularioCadastroMensalidades.php?msg=27'); // redireciona para a página de "OK" }else{ echo $conn->error; // se não der certo, escreve o erro } $conn->close(); // fecha a conexão ?> O problema que está acontecendo, é que ele cadastra TODOS os alunos, mas o último cadastra 2x e não estou entendendo isso.... porque está cadastrando duas vezes o último aluno? por favor.. preciso de ajuda urgente!!!
  3. Boa tarde, Este é meu primeiro tópico aqui no fórum, estou iniciando os estudos em Árvore Binária de Pesquisa (Busca) e estou com dificuldades na inserção e impressão dos números (chaves) na tela depois de inseridos os números. -- Alguma sugestão? é a declaração da RAIZ? é a função de inserção? Na verdade não aparece nada quando chamo as funções de impressão, eu já "testei" a RAIZ antes de chamar a função de impressão e ela está "zerada" -- Segue o código abaixo, se alguém tiver um "caminho" para eu seguir eu agradeço! -- #include <stdio.h> #include <stdlib.h> typedef struct arvore{ int valor; struct arvore *dir, *esq; } arvore; void insere(arvore *raiz, int valor){ if (raiz == NULL){ arvore *aux; aux = malloc (sizeof (arvore)); aux->valor = valor; aux->dir = NULL; aux->esq = NULL; raiz = aux; } else if (valor > raiz->valor) insere (raiz->dir, valor); else if (valor < raiz->valor) insere (raiz->esq, valor); else printf ("Elemento ja existe na arvore\n"); } void em_ordem(arvore *raiz){ // esquerda / raiz / direita if (raiz != NULL){ em_ordem(raiz->esq); printf("%d ", raiz->valor); em_ordem(raiz->dir); } } void pre_ordem(arvore *raiz){ // raiz / esquerda / direita if (raiz != NULL){ printf("%d ", raiz->valor); pre_ordem(raiz->esq); pre_ordem(raiz->dir); } } void pos_ordem(arvore *raiz){ // esquerda / direita / raiz if (raiz != NULL){ pos_ordem(raiz->esq); pos_ordem(raiz->dir); printf("%d ", raiz->valor); } } void main(){ arvore *raiz; raiz = NULL; insere(raiz, 10); insere(raiz, 8); insere(raiz, 12); insere(raiz, 5); insere(raiz, 11); printf("\n>> IMPRESSAO\n====================================================="); printf("\n---------------------------------------\n EM ORDEM: "); em_ordem(raiz); printf("\n---------------------------------------\n PRE ORDEM: "); pre_ordem(raiz); printf("\n---------------------------------------\n POS ORDEM: "); pos_ordem(raiz); printf("\n---------------------------------------\n"); }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.