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 landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
×

Informação importante

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