Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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:
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.
=/
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.
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
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:
mais aonde coloco estes parametros?
Obrigado por corrigir o meu código, citei algo que nunca usei então caso aconteça já sei o que fazer. :yay:
deu certo, mais com esta funçao nao tem risco de a media ser maior que 5? ele nao pode passar de 5 entende?
>
deu certo, mais com esta funçao nao tem risco de a media ser maior que 5? ele nao pode passar de 5 entende?
Ele não tem como passar de 5, isso é matemática.
beleza
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
while($nota_rep = mysql_fetch_array($sql)){
ps: Não sei se tá certo não, rs.