Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

?

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como é diferenciado os resultados?

1 para muitos?

Cada aluno pode ter quantas notas?

Um número indeterminado?

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer ao auxílio dos amigos, mas preciso entender e resolver um problema.
       
      Tenho uma Rotina que o usuário seleciona os produtos que deseja para requerer ao setor responsável.
       
      O usuário escolhe um produto qualquer e Clicla em um button para incluir a lista.

      O problema que estou enfrentando é que após escolher o produto e teclar ENTER o Sistema já salva no BD.
       
      Gostaria de criar uma Tecla de Atalho, para quando incluir/escolher o produto na lista, o usuário tecla como exemplo:
      ALT+A  para agregar a lista
      ALT+S para salvar a lista de itens desejados.

      Assim, quando teclar enter, o sistema não dispara o GRAVAR na Base de Dados.

      Grato,

      Cesar
       
       
       
    • Por violin101
      Caros amigos, saudações.

      Por favor, peço desculpa em recorrer a ajuda dos amigos referente uma dúvida.

      Tenho um Sistema que estou escrevendo em PHP + Codeigniter e a minha dúvida em Codeigniter é:
      Obs.: as tabela são em MySql

      => como faço para IMPORTAR o dado de uma Tabela para outra, as tabela são:
      ___________________Tabela de Pedido     =========== para ==========>    Tabela de Entrada de Lançamentos
      itens: codigoProduto | quantidade | valorUnitario  === importar===> itens: codigoProduto | quantidade | valorUnitario
       
      Estou tentando de várias formas, mas não estou conseguindo.

      Por favor, alguém pode me dar uma ajuda, explicação ou orientação.

      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma pequena dúvida que não estou conseguindo resolver.

      Tenho 2 Tabelas, a 1ª.principal e a 2ª.secundária.

      Exemplo:
      Dados da 1ª Tabela - Peças e Equipamentos
      Dados da 2ª Tabela - Veículos.

      Seria isso:
      0010 - Pneu Aro 20
        [x] 001 - Corsa
        [_] 002 - Fusca
        [_] 003 - Palio
      Comentário:________________
       
      0100 - Óleo para Motor
         [x] 002 - Fusca
         [_] 003 - Palio
      Comentário:________________
       
      1030 - Lubrificante
         [_] 001 - Corsa
         [x] 003 - Palio
      Comentário:________________
       
      O meu problema está sendo quando preciso SALVAR/ATERAR o campo COMENTÁRIO, pois trata-se da 1ª.tabela.
       
      Gostaria salvar o COMENTÁRIO sem interferir nas seleção da 2ª. tabela.
       
      Grato,
       
      Cesar
       
       
       
       
       
    • Por Carcleo
      Estou começando no Laravel 11 e me deparei com um problema de belongsTo
       
      public function listOfClass(Request $request, StudentDisciplineClassroom $sdc) : ?string {         $all = $sdc::select('student')->with('studentRelation')->where('classroom',$request->classroom)->distinct('student')->get();     dd($all->toArray());     $students = [];     foreach ($all as $student) {             $students[] =$student;     }       return response()->json($students)->getContent();     } isso

      Em studentRelation temos na tabela StudentDisciplineClassroom com os campos

      id(chave primaria)
      ra (chave estrangera que referencia o campo academic_registration na tabela de students)

      e a tabela student tem os campos

      id (chave primária)
      academic_registration (que vai ser refeenciada na tabela StudentDisciplineClassroom

      Mas na hora de fazer
      $sdc::select('student')->with('studentRelation')->where('classroom',$request->classroom)->distinct('student')->get();
      O studentRelation retorna nulo

      Onde eu posso estar errando?
    • Por joao b silva
      Tenho uma pequena aplicação em php que gera arquivos pdf com a MPDF e envia email com a PHPMAILER. De repente a app parou de enviar os emails  e apresenta a seguinte mensagem de erro:
       
      Error PHPMailer: SMTP Error: Could not authenticate.
       
      Faço uso de um hotmail para a configuração do PHPMAILER.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.