Estrutura de repetição e armazenamento em array com php
10/10/2017
0
$prova = "prova de matematica";
$res = ("SELECT nomeProva, porcentagemDeAcertosUsuario FROM histórico where nomeProva = '$prova'");
//montando a table
echo '
<table>
<tr>
<td><h1>Matéria: </td>
<td><h1>Média dos usuários: </td>
</tr></h1>';
//executando o comando while
while($escrever=mysql_fetch_array($res)){
echo '<tr>
<td>' . $escrever['nomeProva'] . '</td>
<td>' . $escrever['porcentagemDeAcertosUsuario'] . '</td>
</tr>';
}
echo '</table>';
Assim estou conseguindo trazer todos os dados do banco de determinada matéria com while, mas não consigo desenvolver um código que veja o número de pessoas que fizeram a matéria e fazer uma média dessa matéria entre os usuários que a fizeram.
Vinicius
Post mais votado
16/10/2017
Se sim, você pode adicionar um apelido a esta coluna e executar a função: sum().
Ficaria algo +- assim: "SELECT nomeProva, sum(porcentagemDeAcertosUsuario) as TOTAL FROM histórico where nomeProva = '$prova'";
Dentro da sua while substitua:
<td>' . $escrever['porcentagemDeAcertosUsuario'] . '</td>
por
<td>' . ($escrever['TOTAL'] * 0.100) . '</td>
Se entendi bem, a função sum vai somar todos os resultados que a query obteve daquele ID que foi passado, e no código você faria a multiplicação por 100.
Espero ter ajudado
Bons códigos!
Rafael Castro
Mais Posts
17/10/2017
Alex William
Faça uma tabela que guarde o id do aluno, o id da prova e a % de acertos dele.
Porque dessa forma?
Porque dessa forma vc pode selecionar mais dados, como media por prova, media por aluno, aluno que acertou mais geral, aluno que acertou mais por prova e também pode usar pra impedir que um aluno faça a mesma prova novamente.
Por exemplo, impedindo o aluno de fazer a mesma prova:
Quando o aluno tentasse acessar a prova, o sistema verificaria se o id do aluno ja ta cadastrado com a respectiva prova, se sim, ja mostrava que ele ja fez a prova:
$query = "SELECT * FROM tabelaProvaAluno WHERE id_aluno='IdAluno' AND id_prova='IdProva'"; $query = mysql_query($query);
depois:
if(mysql_num_rows($query)>0) { echo "Você já fez essa prova!"; }
Outro Exemplo:
Ver quem teve maior % de acertos geral:
$query = "SELECT * FROM tabelaProvaAluno ORDER BY procentagem_acertos ASC"
Resumindo, com uma tabela auxiliar pra isso você consegue exibir mais estatisticas pro professor depois.
Espero ter ajudado. :D
17/10/2017
Vinicius
Se sim, você pode adicionar um apelido a esta coluna e executar a função: sum().
Ficaria algo +- assim: "SELECT nomeProva, sum(porcentagemDeAcertosUsuario) as TOTAL FROM histórico where nomeProva = '$prova'";
Dentro da sua while substitua:
<td>' . $escrever['porcentagemDeAcertosUsuario'] . '</td>
por
<td>' . ($escrever['TOTAL'] * 0.100) . '</td>
Se entendi bem, a função sum vai somar todos os resultados que a query obteve daquele ID que foi passado, e no código você faria a multiplicação por 100.
Espero ter ajudado
Bons códigos!
Cara muito obrigado, estou a semanas atrás disso e não havia conseguido, não tens noção de como me ajudou! Porém esse código está somando as porcentagens e não fazendo uma média entre elas sabe ? No caso eu queria soma-las (como você fez) e dividir pelo número de provas de determinada matéria. O código ficou assim:
<?php $email = $_SESSION['logado']; $connect = mysql_connect('localhost','root',''); $db = mysql_select_db('eenemp'); $prova = "prova de matematica"; $res = mysql_query("SELECT nomeProva, sum(porcentagemDeAcertosUsuario) as TOTAL FROM historico where nomeProva = '$prova'"); echo '<table style="width:100%"> <tr> <td><h1>Matéria: </td> <td><h1>Média dos usuários: </td> </tr></h1>'; while($escrever=mysql_fetch_array($res)){ echo '<tr> <td>' . $escrever['nomeProva'] . '</td> <td>' . ($escrever['TOTAL'] * 0.100) . '</td> /// Aqui ao invés de apenas somar queria fazer uma média, percorrendo o número de linhas da prova de matématica($prova que eu passo o paramentro direto para a váriavel e ela pega no banco de dados), e pegando esse valor e dividindo pela soma, mas não sei fazer isso, percorrer e pegar o número de linhas. Por exemplo se tem quatro registros da prova de matematica, somaria todas as porcentagens e dividiria por 4, assim fazendo uma média e a exibindo. </tr>'; }
Se conseguir me ajudar nisso também serei muito grato pois é a única coisa que falta para meu tcc. Porém desde já agradeço e muito, pois não tinha nem ideia de onde começar! Muito obrigado mesmo!
17/10/2017
Vinicius
Clique aqui para fazer login e interagir na Comunidade :)