Sistema de Chamadas
Boa noite, galera, tudo tranquilo?
Sou novo na área de programação, e principalmente em Php/MySQL rsrs.
Há alguns meses, me meti a fazer um sistema de chamadas para o Cursinho do qual sou coordenador. Ele funciona, mas venho tendo alguns problemas de performance e velocidade do registro dos dados no banco de dados, e se vocês pudessem me auxiliar a dar uma acelerada nisso eu ficaria muito grato.
Antes de qualquer coisa, vou explicar por cima como funciona:
Existe uma tabela principal, com o nome de chamadas, que guarda o registros de todas as chamadas realizadas no cursinho. Dentro dessa tabela, estão contidos o ID único de cada chamada, o horário, o professor que a realizou e sala. São quatro salas, e cada número (1, 2, 3 ou 4) no campo 'sala' da chamada faz que o sistema redirecione para a tabela de presenças da sala, onde cada sala tem uma tabela, para o registro das presenças dos alunos.
Na tabela de presenças, em que cada sala tem uma, o sistema preenche cada linha com o ID da chamada, o RA do aluno e a presença (0 para falta e 1 para presença). Desse modo, nessa tabela, muitas linhas são inseridas por chamada realizada (por volta de 40 a 60 linhas, a depender da sala).
Acontece que, quando testo com uma internet de qualidade, ou mesmo no meu localhost, a inserção desses resultados funciona muito bem, e não obtenho erro algum. Só que, na escola onde as chamadas são realizadas, a internet é apenas "navegável", e os professores têm tido alguns problemas de erros na página enquanto tentam realizar o procedimento.
Dentro do script Php, as coisas funcionam mais ou menos assim: existe um IF que verifica, antes de tudo, se os dados da chamada conseguiram ser inseridos na tabela principal. Aí, caso a condição seja verdadeira, um laço while começa a inserção dos registros na tabela de presenças. E eu tenho tido alguns erros justamente nesse ponto... Em muitas chamadas realizadas na escola, o script chega a registrar a chamada na tabela principal mas não lança as presenças na outra tabela... E em outras vezes, registra os dados na tabela principal apenas de forma parcial, ou seja, preenche ID, data, e deixa o resto em branco, parando o processo todo ali... E tudo era para ser integrado, eu realmente não sei o que acontece. No meu raciocínio, primeiro o browser recolhia os dados e enviava ao servidor, e depois o servidor lançaria esses dados de uma vez, mas não parece que é isso que está acontecendo.
Gostaria de saber se: é muito grave a lógica que eu utilizei? O laço while para inserir as presenças repete a query por aluno, ou seja, roda de 40 a 60 vezes executando uma query do MySql. Seria melhor eu unir essas presenças em um array e depois lançá-las com um query só na tabela de presenças?
Mais uma coisa: haveria como assegurar que, se o MySql for inserir os dados na tabela principal, tem que necessariamente inserir as presenças na outra tabela? Ou seja, ou insere tudo ou insere nada... Meu maior problema não tem sido a impossibilidade de realizar essas chamadas em sala, já que os professores têm seus logins e senha e podem lançá-las para o sistema em casa, mas sim os erros que muitas vezes acontecem nas tentativas do processo e deformam o registro como foi citado acima...
Bem, pessoal, eu espero que tenha ficado claro. Tô realmente engatinhando nessa área, e muitas vezes as soluções que tenho em mente, por mais que funcionem, não são as mais viáveis . Muito obrigado, e mais uma vez boa noite!
Discussão (13)
Carregando comentários...