Ir para conteúdo

POWERED BY:

Arquivado

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

JeanCFL

Média no php

Recommended Posts

Ola pessoal,

 

Tenho um sistema de compras e quero exibir a média de 1 a 5 das qualificações que o vendedor teve.

 

O sistema é assim:

 

Na tabela qualifications tem os campo 'reference_id' que é o id do vendedor, e o campo 'nota' que pode ser enumerado de 1 a 5.

 

Ou seja, faço uma consulta pelo id do vendedor, pego todas as notas que ele teve, pelo campo nota e tiro uma média destas notas que deve ser uma média de 1 a 5.

 

Como faço isso no php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o banco de dados, fiz um sisteminha com o bando sendo mysql ?

<?php
$id_vendedor = "1"; // aqui coloque a id do vendedor que você quer saber a média
$sql = mysql_query("SELECT * FROM qualifications WHERE reference_id = '$id_vendedor'");
$num_notas = mysql_num_rows($sql);
$nota01 = mysql_fetch_array($sql);
$nota01 = $nota01['nota'];
while($nota_rep = mysql_fetch_array($sql)){
$nota02 = $nota02 + $notarep['nota'];
}
$total = $nota02 + $nota01 / $num_notas;
echo "Media do vendedor " . $id_vendedor . " = " . $total;
echo "<br /> Número de votos: " . $num_notas;
?>

ps: Não sei se tá certo não, rs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar a função AVG do SQL que calcula a média de uma coluna, eu nunca usei, mas acredito que no seu caso ficaria assim:

 

<?php

$id_vendedor = "1"; // Captura o ID do vendedor
$query = mysql_query("SELECT AVG(nota) FROM qualifications WHERE id_reference = '".$id_vendedor."'"); // Query de seleção com a função AVERAGE(AVG) do SQL
$res = mysql_fetch_array($query); // Define $res como mysql_fetch_array de $query
$nota = $res['nota']; // Vai setar a variável nota como resultado do select da coluna nota
echo $nota; // Vai exibir o resultado

?>

 

Não testei e nunca usei essa função AVG, mas aparentemente está correto. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal nao deu certo.

 

testei os dois.

 

o do Thiago Vianna /+/ ele aparece media 0 e numero de votos nao aparece nada. sendo que ja tem votos na tabela.

 

e o do ricardobarantini nao aparece nada.

 

=/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo você precisa colocar um alias na consulta.. utilize a do ricardo como base, modifique.

 

SELECT AVG(nota) por SELECT AVG(nota) as media

 

<?php

$id_vendedor = "1"; // Captura o ID do vendedor
$query = mysql_query("SELECT AVG(nota) as media FROM qualifications WHERE id_reference = '".$id_vendedor."'"); // Query de seleção com a função AVERAGE(AVG) do SQL
$res = mysql_fetch_array($query); // Define $res como mysql_fetch_array de $query
$media = $res['media']; // Vai setar a variável nota como resultado do select da coluna nota
echo $media; // Vai exibir o resultado

?>

 

Se você não criar o alias ele ira dar echo na ultima nota registrada na variável `nota`.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara deu certo, mais nao teria como filtrar para ele exibir somente numeros inteiros.

 

0 ou 1 ou 2 ou 3 ou ou 5

 

porq do jeito que ele esta as vezes ele exibe por exemplo 2.5

Compartilhar este post


Link para o post
Compartilhar em outros sites
ai no caso você pode tratar a var com 2 funções

 

ceil

que vai arrendondar para o maior valor.

 

e flor

que vai arredondar para o menor valor.

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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