JeanCFL 0 Denunciar post Postado Outubro 8, 2012 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
Thiago Vianna /+/ 7 Denunciar post Postado Outubro 9, 2012 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
Ricardo Barantini 33 Denunciar post Postado Outubro 9, 2012 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
JeanCFL 0 Denunciar post Postado Outubro 9, 2012 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
leomarriel 7 Denunciar post Postado Outubro 9, 2012 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
JeanCFL 0 Denunciar post Postado Outubro 9, 2012 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
Vinicius Rangel 208 Denunciar post Postado Outubro 9, 2012 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. Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Outubro 10, 2012 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
JeanCFL 0 Denunciar post Postado Outubro 10, 2012 mais aonde coloco estes parametros? Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Ianni 189 Denunciar post Postado Outubro 10, 2012 http://br1.php.net/manual/pt_BR/function.ceil.php http://br1.php.net/manual/pt_BR/function.floor.php Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo Barantini 33 Denunciar post Postado Outubro 10, 2012 Obrigado por corrigir o meu código, citei algo que nunca usei então caso aconteça já sei o que fazer. :yay: Compartilhar este post Link para o post Compartilhar em outros sites
JeanCFL 0 Denunciar post Postado Outubro 11, 2012 deu certo, mais com esta funçao nao tem risco de a media ser maior que 5? ele nao pode passar de 5 entende? Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo Barantini 33 Denunciar post Postado Outubro 11, 2012 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. Compartilhar este post Link para o post Compartilhar em outros sites
JeanCFL 0 Denunciar post Postado Outubro 11, 2012 beleza Compartilhar este post Link para o post Compartilhar em outros sites