Jump to content
mateusjosepretti

Cálculo de Média por Matéria

Recommended Posts

Preciso de uma ajuda para a construção de um sistema que separa a listagem das notas por matérias e faz o cálculo da média de cada matéria.
Segue código de listagem de dados:
 

<?PHP
include("functions/limita-texto.php");

if(empty($_GET['pg'])){}
else{ 
$pg =$_GET['pg'];
if(!is_numeric($pg)){
	
	echo '<script language= "JavaScript">
					location.href="home.php?acao=vz-resultados_prof";
		</script>';
}

}


if(isset($pg)){ $pg = $_GET['pg'];}else{ $pg = 1;}

if(isset($_POST['palavra-busca'])){
	$quantidade = 10000;
}else{
	$quantidade = 10000;
}


$inicio = ($pg*$quantidade) - $quantidade;

if(isset($_POST['palavra-busca'])){
	$busca = addslashes($_POST['palavra-busca']);
	$triAo = $_GET['tri'];
	$select = "SELECT * from al_resultados WHERE rm = '$rm' ORDER BY materia asc LIMIT $inicio, $quantidade";	
}else{
	$select = "SELECT * from al_resultados WHERE rm = '$rm' AND MD5(triProva) = '$triF' ORDER BY materia ASC LIMIT $inicio, $quantidade";
}


$contagem =$inicio + 1;
$Apr = "Aprovada";
$Rep = "Reprovado";
$Rec = "Recuperação";
		
		try{
			$result = $conexao->prepare($select);			
			$result->execute();
			$contar = $result->rowCount();
			if($contar>0){
				while($mostra = $result->FETCH(PDO::FETCH_OBJ)){


?>           
                  <tr class="<?php
									if ($mostra->nota < '6.0'){
  										echo "danger text-danger";
									}else{
  										echo "success text-success";}?>">
                  
                  	<td> <?php echo $contagem++;?>			</td>
                  	<td> <?php $date = new DateTime($mostra->dataProva); echo $date->format('d/m/Y');?></td>
                  	<td> <?php echo $mostra->tipoProva;?>	</td>
                  	<td> <?php echo $mostra->materia;?>	</td>
                  	<td class="<?php
									if ($mostra->nota < '6.0'){
  										echo "nota-red";
									}else{
  										echo "nota-blue";}?>"> <?php echo $mostra->nota;?>	</td>
                 	<td> <?php
									if ($mostra->nota < '6.0'){
  										echo $Rec;
									}else{
  										echo $Apr;}?></td>
                  </tr>
<?php
																  
}				
			}else{
				echo '<div class="alert alert-danger">
                      <strong>Aviso!</strong> Não Existem Resultados em Seu Nome!
                </div>';
			}
			
		}catch(PDOException $e){
			echo $e;
		}
?>                  

A ideia seria ficar como este:
asdasd.thumb.png.92064421dbb1017e21186591ffaca4d9.png

 

Mas hoje está assim:

dddd.thumb.png.4b21f5f868eaa52202d6796ecfe463f2.png

Share this post


Link to post
Share on other sites
5 minutos atrás, Rapadura disse:

  

Caso não conheça esses sites recomendo muito para estudo sobre desenvolvimento web

 

W3School

 

Mozilla Developer

 

Tableless

 

 

 

Eu conheço só que meus problemas são mais específicos. Já procurei sobre os problemas mas ainda não encontrei nada...

Share this post


Link to post
Share on other sites

Não entendi claramente o que você quer fazer. Teria um código de exemplo sobre o que estando fazer?

#

#

#

Se você está fazendo isso para uma instituição e estão lhe pagando para fazer o mesmo, você tem que ter consciência que amanhã ou depois outros desenvolvedores vai obter esse mesmo código que você está produzindo sem conhecimento prévio para se oferecer como produto.

Ou seja isso vai se resultar em:

  • Um programador mais experiente dizendo que o ultimo programador (você) não tem nenhuma competência para atuar como tal.
  • O seu cliente que comprou o seu código certamente terá mais despesa para pagar uma manutenção ou extensão do que teve lhe pagando. Já que seu código está todo poluído.

Você deve estudar boas práticas de desenvolvimento, nesse caso eu concordo que seus problemas são mais 'específicos'.

Você ainda não tem o conhecimento nem do básico.

if(isset($pg)){ $pg = $_GET['pg'];}else{ $pg = 1;}

Não entenda isso de uma má maneira e sim como uma sugestão construtiva.

[]s.

Share this post


Link to post
Share on other sites
4 horas atrás, jamesbond disse:

Não entendi claramente o que você quer fazer. Teria um código de exemplo sobre o que estando fazer?

#

#

#

Se você está fazendo isso para uma instituição e estão lhe pagando para fazer o mesmo, você tem que ter consciência que amanhã ou depois outros desenvolvedores vai obter esse mesmo código que você está produzindo sem conhecimento prévio para se oferecer como produto.

Ou seja isso vai se resultar em:

  • Um programador mais experiente dizendo que o ultimo programador (você) não tem nenhuma competência para atuar como tal.
  • O seu cliente que comprou o seu código certamente terá mais despesa para pagar uma manutenção ou extensão do que teve lhe pagando. Já que seu código está todo poluído.

Você deve estudar boas práticas de desenvolvimento, nesse caso eu concordo que seus problemas são mais 'específicos'.

Você ainda não tem o conhecimento nem do básico.


if(isset($pg)){ $pg = $_GET['pg'];}else{ $pg = 1;}

Não entenda isso de uma má maneira e sim como uma sugestão construtiva.

[]s.

Sim, realmente não tenho muito conhecimento, mas estou desenvolvendo como um projeto de escola (ABERTO) para poder mostrar o que consigo fazer. Meu código está sim muito poluído, mas estou fazendo de forma rápida de uma maneira que entendo.

 

Só queria saber se existe uma maneira de separar os resultados das notas por matérias e fazer a somatória e a média automaticamente.

 

Não fiz cursos, estou tentando aprender de forma autônoma por enquanto que não tenho tempo para cursos extracurriculares.

 

Mateus Tozoni.

Share this post


Link to post
Share on other sites

Admiro isso, mas você só está se iludindo aprendendo do jeito errado.

Acredite ou não, já passei por isso na época em que eu programava em VB.

O tempo que você está fazendo ERRADO de 'forma rápida' para tentar aprender algo, você poderia usar esse mesmo tempo para aprender os fundamentos dá linguagem e o melhor, de forma correta.

 

'De uma maneira que entendo' - Entender enquanto está no desenvolvimento é fácil.

Difícil é quando se passa alguns dias sem mexer nesse mesmo código. Você acaba esquecendo o que cada 'parte' do seu código faz, ainda mais um código estruturado.

 

Você veio pedir ajuda em X e estou lhe oferecendo o caminho do alfabeto inteiro.

Aprenda o básico dá linguagem e depois escreva códigos mostrando do que realmente é capaz.

Muitos iniciantes se enganam aprendendo de maneira errada e isso acaba estragando o percurso do mesmo durante um determinado período.

 

Absorvendo o que foi dito ou não, o texto está aí.

 

Filipe Macedo.

[]s.

Share this post


Link to post
Share on other sites
Agora, jamesbond disse:

Admiro isso, mas você só está se iludindo aprendendo do jeito errado.

Acredite ou não, já passei por isso na época em que eu programava em VB.

O tempo que você está fazendo ERRADO de 'forma rápida' para tentar aprender algo, você poderia usar esse mesmo tempo para aprender os fundamentos dá linguagem e o melhor, de forma correta.

Você veio pedir ajuda em X e estou lhe oferecendo o caminho do alfabeto inteiro.

Aprenda o básico dá linguagem e depois escreva códigos mostrando do que realmente é capaz.

Muitos iniciantes se enganam aprendendo de maneira errada e isso acaba estragando o percurso do mesmo durante um determinado período.

 

Absorvendo o que foi dito ou não, o texto está aí.

 

Filipe Macedo.

[]s.

Você teria algum curso gratuito ou uma outra maneira para eu conseguir estudar?

Estou sem poder pagar também, pois tendo só 14 anos fica difícil seus pais acreditarem que este caminho possa valer algum dia. Estou desenvolvendo este projeto, justamente, para a escola me ajudar a continuar neste caminho, mostrando aos meu pais que tenho determinação e posso fazer parte disso e que isso não me fara de um inútil mas sim de um Programador, Trabalhador.

Gostaria de um curso bem explicativo se puder me ajudar, pois como já falei não tenho muito tempo e não consigo aprender de um jeito muito separado.

Se puder me fornecer um curso gratuito, me passar algum site que tenha um curso gratuito, farei o melhor uso do mesmo.

 

Mateus Tozoni.

Share this post


Link to post
Share on other sites

Existe diversos conteúdos na internet totalmente gratuito.

Curso em vídeo

 

E também existe um pago que oferece o ensinamento do básico de forma gratuita (se eu não me engano)

PHP do zero ao profissional.

 

Não sou nenhum profissional dá linguagem mas já tenho bastante afinidade com a mesma.

 

Caso você queira uma pessoa para lhe auxiliar em dúvidas e dicas, sei lá.

Meu skype -> tevalen22

Meu email -> devmacedo@gmail.com

 

Filipe Macedo.

[]s

Share this post


Link to post
Share on other sites
2 minutos atrás, jamesbond disse:

Existe diversos conteúdos na internet totalmente gratuito.

Curso em vídeo

 

E também existe um pago que oferece o ensinamento do básico de forma gratuita (se eu não me engano)

PHP do zero ao profissional.

 

Não sou nenhum profissional dá linguagem mas já tenho bastante afinidade com a mesma.

 

Caso você queira uma pessoa para lhe auxiliar em dúvidas e dicas, sei lá.

Meu skype -> tevalen22

Meu email -> devmacedo@gmail.com

 

Filipe Macedo.

[]s

Mandei solicitação Skype.

 

Mas continuando... Você saberia se de alguma maneira daria para recuperar dados do Banco de Dados MySql InnoDB separando eles por matérias e fazer as médias?

Share this post


Link to post
Share on other sites

Vale ressaltar, avise seus pais que o mercado de tecnologia, desenvolvimento de software são uns dos mercados mais amplos que existem.

Você para abrir uma empresa nesse mundo virtual não precisa de um estabelecimento físico, muitos funcionários, pagar conta de luz e etc.

Basta ter um bom produto para oferecer.

Não existe limite para a criatividade, problemas são os que mais existem, basta você imaginar uma forma de resolver esses mesmos problemas com a tecnologia que você domina.

Share this post


Link to post
Share on other sites
3 minutos atrás, mateusjosepretti disse:

Mandei solicitação Skype.

 

Mas continuando... Você saberia se de alguma maneira daria para recuperar dados do Banco de Dados MySql InnoDB separando eles por matérias e fazer as médias?

Como está a estrutura do seu banco de dados?

É uma tabela onde armazena:

Aluno - Matéria - Nota

?

Share this post


Link to post
Share on other sites
Agora, jamesbond disse:

Como está a estrutura do seu banco de dados?

É uma tabela onde armazena:

Aluno - Matéria - Nota

?

Se puder entrar pelo skp consigo passar mais detalhes. Mas vou passar a print da minha tabela, mais rápido:
Tabela dos Resultados:

db1.thumb.png.918117a221723210c2c9320cad62f838.png

 

Tabela de Login dos Alunos:

http://prntscr.com/f2r10u

Obs.: O Upload da imagem não funcionava, por isso o link.

Share this post


Link to post
Share on other sites
7 minutos atrás, jamesbond disse:

Vale ressaltar, avise seus pais que o mercado de tecnologia, desenvolvimento de software são uns dos mercados mais amplos que existem.

Você para abrir uma empresa nesse mundo virtual não precisa de um estabelecimento físico, muitos funcionários, pagar conta de luz e etc.

Basta ter um bom produto para oferecer.

Não existe limite para a criatividade, problemas são os que mais existem, basta você imaginar uma forma de resolver esses mesmos problemas com a tecnologia que você domina.

Já falei com os meus pais sobre o assunto, só que os mesmos não entendem muito sobre ele. Só estou conseguindo um pouco de "Liberdade", pois agora a minha escola aprovou o projeto em andamento e estou dando continuidade do projeto e ainda estou com um projeto de site para a equipe de corrida do meu pai. Então está é a única maneira de convencer que a área da Programação é "BOA" para a minha geração.

15 minutos atrás, jamesbond disse:

Existe diversos conteúdos na internet totalmente gratuito.

Curso em vídeo

 

E também existe um pago que oferece o ensinamento do básico de forma gratuita (se eu não me engano)

PHP do zero ao profissional.

 

Não sou nenhum profissional dá linguagem mas já tenho bastante afinidade com a mesma.

 

Caso você queira uma pessoa para lhe auxiliar em dúvidas e dicas, sei lá.

Meu skype -> tevalen22

Meu email -> devmacedo@gmail.com

 

Filipe Macedo.

[]s

Se puder/quiser me contatar bem mais rápido ou ainda avisar de uma resposta sua:
+55 (11) 94867-5326 e/ou me aceita skype e me mande mensagens. Valeu.

Share this post


Link to post
Share on other sites

Como é diferenciado os resultados?

1 para muitos?

Cada aluno pode ter quantas notas?

Um número indeterminado?

Share this post


Link to post
Share on other sites
Agora, jamesbond disse:

Como é diferenciado os resultados?

1 para muitos?

Cada aluno pode ter quantas notas?

Um número indeterminado?

O numero de resultados é indeterminado, pois cada resultado corresponde a uma prova que o professor cadastrou anteriormente.

Os resultados são de trimestre em trimestre.

Não sei bem como organizar está área do professor pois nunca estive no lugar do professor para saber quais campos usar e como grava-los no db.

 

Os resultados são diferenciados pelo RM do aluno(Somente o aluno com aquele RM poderá visualizar o resultado citando aquele RM)

 

Os alunos podem ter indeterminados resultados, pois depende da quantidade de provas cadastradas pelo professor.

Ai que surge outro problema, não sei como relacionar a tabela com as provas cadastradas pelos professores e a tabela dos resultados para poder registrar somente um resultado por aluno por prova.

 

Entendeu?

Share this post


Link to post
Share on other sites

Opa, vou te dar instruções, e o que você precisa pesquisar pra aprender fazer isso.

 

Pra programar alguma coisa, primeiro você precisa definir seus objetivos, vamos fazer bem resumido:

 

1 - Cadastrar os alunos

2 - Cadastrar as notas dos alunos

3 - Exibir as médias dos alunos

 

Ja tendo seus objetivos, você precisa ver como(ou o que você precisa) fazer seus objetivos:

 

1 - Cadastras os alunos:

     

     Pra cadastrar os alunos eu preciso de:

     1 - Uma tabela com os dados -> id - nome - rm;

     2 - Um formulário pra preencher esses dados;

     3 - Uma função no php que insira esses dados na tabela.

 

2 - Cadastrar as notas dos alunos:

 

     1 - Uma tabela com as notas, dados -> id, nota, prova, materia, trimestre relacionado, aluno_relacionado.

      IMPORTANTE: Essa tabela precisa de uma relação com a tabela dos alunos, pra saber de qual você está falando.

     2 - Um formulário pra preencher esses dados;

     3 - Uma função no php que insira esses dados na tabela.

 

3 - Exibir as médias dos alunos:

 

    1 - Buscar os alunos no banco de dados.

    2 - Com base no RM e no trimestre fornecido, consultar as notas no banco de dados.

   

Agora que complica um pouco, por que você vai precisar parametrizar as coisas.

 

Primeiro: quantas provas esse aluno teve ?

 

Citar

$rs = $conecta->query("SELECT * FROM notas WHERE aluno_relacionado = '$rm' AND trimestre = '$trimestre'")

$qntd_provas = mysqli_num_rows($rs);

 

Mas e as matérias ?

 

Precisa de outra tabela com as matérias -> id, materia

 

Citar

$rs = $conecta->query("SELECT * FROM materias")

while($row = mysqli_fetch_array($rs)){

     $materia  = $row['materia'];

     $rs_2 = $conecta->query("SELECT * FROM notas WHERE aluno_relacionado = '$rm' AND trimestre = '$trimestre' AND materia ='$materia'");

     $qntd_provas_materia = mysqli_num_rows($rs_2);

 

}

 

Mas agora você quer somar as notas ?

 

Citar

$rs = $conecta->query("SELECT * FROM materias")

while($row = mysqli_fetch_array($rs)){

     $materia  = $row['materia'];

     $rs_2 = $conecta->query("SELECT * FROM notas WHERE aluno_relacionado = '$rm' AND trimestre = '$trimestre' AND materia ='$materia'");

$nota = 0;

      while($row_2 = mysqli_fetch_array($rs_2)){

            $nota = $row_2['nota'];

           $nota_sum += $nota;

      }

     $qntd_provas_materia = mysqli_num_rows($rs_2);

 

}

 

E pra tirar a média ?

 

Citar

$rs = $conecta->query("SELECT * FROM materias")

while($row = mysqli_fetch_array($rs)){

     $materia  = $row['materia'];

     $rs_2 = $conecta->query("SELECT * FROM notas WHERE aluno_relacionado = '$rm' AND trimestre = '$trimestre' AND materia ='$materia'");

$nota = 0;

      while($row_2 = mysqli_fetch_array($rs_2)){

 

            $nota = $row_2['nota'];

           $nota_sum += $nota;

      }

     $qntd_provas_materia = mysqli_num_rows($rs_2);

     $media_por_materia = ($nota_sum/ $qntd_provas_materia);

     echo "Materia: " . $materia . " - Média: ". $media_por_materia ."<br>";

}

 

 

Não testei esses códigos, mas é pra você ter um base de como continuar.

 

Pesquise por essas coisas:

 

Como fazer consultas com tabela relacionadas MySQL;

Somar valores em loop while PHP.

 

E se quiser tornar seu sistema mais dinâmico pesquise por:

 

Submeter formulários via ajax.

Como usar plugins jQuery.

Construir formulário com bootstrap (recomendo pra facilitar na estilização).

 

OBS IMPORTANTE: Esse exemplo de código não é nem de perto o melhor possível, mas é o escrito do modo mais fácil de entender.

 

PS: qnd eu tinha 14 anos eu estava na mesma que você, queria fazer um monte coisas complicadas, fazia de qualquer jeito só pra funcionar, passei assim um bom tempo, fazendo bico, fazendo serviço ruim, mas se não fosse isso nunca tinha aprendido, agora com 22 depois de muitos erros acertei em um projeto e consegui um emprego muito bom na área, se não desistir você consegue, o foco pra você aprender é exatamente isso que você fez, bola um plano e faz ele de algum jeito, e com o tempo você melhora o que você está fazendo automaticamente.

 

Boa sorte.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By babylon
      Ola amigos,
       
      Estava querendo criar algo para meu site, um botao igual do site abaixo para calcular formas de pagamento "ver formas de pagamento":
       
      https://www.chipart.com.br/pc-gamer-level-one-black-amd-3400g
       
      Segue imagem em anexo.
       
      Alguem poderia me ajudar se tem algum script algo pronto ou que ajude para abrir pop up modal?
       
      Obrigado a todos.
       
       

    • By srs1999_
      Tópico
       
      Site em Código
      Sobre desenvolver sites sem o wordpress que ja tá tudo ali feito que seja um site dinâmico ou seja com banco de dados , APIs de pagamento, Painel para o usuário ,  além de todas  as funções que tem no wordpress e você teria propriedade pra explicar sobre detalhes mais técnicos da produção onde no wordpress só quem entende de progrqmação explicaria algum detalhe técnico 
      Então usando basicamente : 
      FRONT END 
      HTML 
       CSS 
      JAVASCRIPT 
      ALGUMA DE BACKEND COMO PHP E BANCO DE DADOS
      Pode se criar sites/sistemas tão bons ou melhores que no wordpress
       
      Fato : o proprio wordpress é feito em php e ate o proprio facebook tbm em php
      Fato 2 :  cerca de 70% dos sites são feitos em Wordpress
       
      Acho esse lance de procurar o caminho mais fácil limita muito a pessoa por exemplo é facil editar imagens no paint bem intuitivo , agora para editar no photoshop com muitas outras possibilidades  acaba sendo importante ir explorando essa elaboração mais difícil  com um mesmo objetivo. No caso do exemplo ( editar imagens )  
       
      Reflexão:
      Vale a pena se dedicar a trabalhar com a ferramenta Wordpress apenas por ser um meio rápido de ganhar dinheiro ?
      Ou trabalhar sem wordpress  usando tudo que exigido pra criar coisas originais mais que não seria tão rápido a produção. Mas creio que além dos sites feitos também geraria a possibildade de vender o sistema web criado para o cliente personalizar .
       
      Você Desenvolveria de que forma :
       Wordpress apenas ?
       
      Conhecer programação pra trabalhar 
      com  Wordpress ?
       
      Produzir tudo só com programação totalmente dinâmico sem  Wordpress?
    • By violin101
      Caros amigos
       
      saudações...
       
      Peço desculpa, se postei minha dúvida em local errado.
       
      Tenho um formulário onde valido todos os campos e após clicar no BUTTON para adicionar, tenho uma função que muda o TITLE e deixa desabilitado.
       
      O problema é o seguinte:
      - caso algum campo fica em branco, após validar o formulário e mudar o BUTTON, não consigo depois de preenchido HABILITAR novamente o button.
       
      Observação:
      1) após preencher o campo que ficou em branco, como faço para HABILITAR o button novamente e mudar o title do button ?
       
       
      na VIEW está assim:
      <form action="<?php echo current_url(); ?>" id="frmEstoque" method="post" onsubmit="this.btn_adc.disabled=true;" > <div class="card-body"> <div class="row"> <!---Todos os campos do Formulário---> </div> </div> <div class="card-footer" style="text-align:center;"> <input type="hidden" id="idCli" name="idCli" value="<?php echo $cliente->idClientes; ?>" /> <a href="<?php echo base_url() ?>admin/estoque" id="" class="btn btn-danger"><i class="fa fa-undo"></i> Voltar</a> &nbsp; <button type="submit" id="btn_adc" name="btn_adc" class="btn btn-primary">Adicionar</button> </div> </form>  
      na JavaScript está assim:
      <script> //Função para Mudar o VALUE do Button Adicionar Veículo document.getElementById("btn_adc").addEventListener("click",function(){ this.innerHTML = this.value++ || 'Aguarde...'; },false); </script> /* Observação: 1) como removo a função acima, após validar o formulário e esse encontrar algum campo vazio. 2) após preencher o campo que ficou em branco, HABILITAR o button novamente. */ <script type="text/javascript"> $(document).ready(function(){ //Função para Validar Formulário $('#frmEstoque').validate({ rules :{ etq_categcars:{ required: true}, etq_destaq:{ required: true}, etq_status:{ required: true} }, messages:{ etq_categcars :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'}, etq_destaq :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'}, etq_status :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'} }, errorClass: "help-inline", errorElement: "span", highlight:function(element, errorClass, validClass) { $(element).parents('.form-group').addClass('error'); }, unhighlight: function(element, errorClass, validClass) { $(element).parents('.form-group').removeClass('error'); $(element).parents('.form-group').addClass('success'); } }); //Status dos Botões ADICIONAR - iniciar como desabilitado. document.getElementById("btn_adc").disabled = true; }); function statusButton(){ //valida conteudo do input if ($("input[name=etq_vlrcpr]").val() != 0 && $("input[name=etq_vlrvda]").val() != 0) { //habilita o botão document.getElementById("btn_adc").disabled = false; } else { //desabilita o botão se o conteúdo do input ficar em branco document.getElementById("btn_adc").disabled = true; } } </script>  
      Grato,
       
      Cesar
       
       
       
       
×

Important Information

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