• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

RayBacK

Galeria - "Melhores fotos"

6 mensagens neste tópico

Boas,

Estou a fazer um sistema para uma galeria e uma das opções é "Melhores fotos", que devem ser escolhidas pelos visitantes e o objectivo era que as fotos com melhor votação, mais visitas e mais comentários fossem as melhores. A minha questão e saber como posso relaciona-las alguma ideia?

Obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$nivel=($visitas/10)*$comments*(($ranking*2)^2)

E depois mostras as que tem nivel maior..

Sei lá é uma questao de inventares uma formula que se adeque e relacione os 3 facotres a ter em conta.. E que de mais importancia a comments k a visitas..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E como é que se ordena os valores? Em SQL é com o ORDER BY, mas é preciso fazer essa formula depois do SQL, como se faz isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Supondo que tens isso divido por várias tabelas da seguinte maneira:

Tabela Fotos <- onde guardas o url/foto, o Rate (das votações) da foto e o número de visitas.

Tabela Comentarios <- onde guardas os comentários com sendo a chave primária o código da foto da tabela das fotografias

A query que deves fazer para mostrar as melhores, supondo que tens isto desta maneira deve ser qualquer coisa do género:

$sql = "SELECT * FROM Fotos WHERE cod_foto in (
SELECT cod_foto FROM fotos WHERE rate * visitas)
INNER JOIN comentarios 
ON fotos.cod_foto = comentarios.cod_foto and comentarios.cod_foto in
(SELECT cod_foto, COUNT(cod_foto) as cnt FROM comentarios order by cnt))"

E deve dar... Não testei a query nem tenho bem a certeza. Mas já fiz isso assim! :)

Ainda estou no trabalho por isso não tenho como testar isso... só em casa, à noite! De qualquer forma se houver erros apita! ;)

1abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acho que já me safei gostei da ideia do joxnas e acabou por ficar assim a query.

$sql = "SELECT * , ((views/10) * (IF(comments,comments, 1)) * (POW((vote * 2), 2))) as nivel  FROM fotos ORDER BY nivel DESC;";

Obrigado  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya mas de até acho que a formula que dei dá muito importancia ao ranking. Se algo com 1 comment e 5 de ranking e 10 visitas tem nivel 100... uma foto com  3 de ranking, 5 comments e 10 visitas tem 108 de nível...

Pá eu acho que o ranking n é um factor muito bom porque uma pessoa que votou 5/5  faz subir logo montes. no entando 20 pessoas que votaram 4/4 fazem subir menos... Acho que o numero de pessoas que ja votaram também devia ser um factor em conta... Se tiveres esse valor disponivel(numero de pessoas que ja votaram) aconselhava-te a construires uma formula mais adequada..

Se o ranking fosse de 1 a 5--

$nivel=(($visitas/10)*$comments*($ranking^2))*($num_pess_que_votaram/(6-$ranking));

ex:

$visitas=27;

$comments=4;

$ranking=3;

$num_pess_que_votaram=7;

nivel ia ser 226.8

Esta fórmula ,sim ,considero mais justa..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora