Hi,
我想做個會員排行榜,依照usernode點閱次數和userpoint來排,
我的db_query是這樣寫的。
<?php
$result = pager_query("SELECT u.uid, u.access FROM {users} u INNER JOIN {profile_values} v ON u.uid = v.uid INNER JOIN {node} n ON u.uid = n.uid INNER JOIN {node_counter} c ON n.nid = c.nid INNER JOIN {userpoints} p ON u.uid = p.uid WHERE v.fid = 2 AND v.value != '' AND u.access != 0 AND u.status != 0 ORDER BY c.totalcount*0.5+p.points*0.5 DESC", 12, 0, NULL);
?>
可以順利依照每個會員usernode閱讀總次數50%+會員分數50%計算來排名,
不過有個大問題,就是我不知道如何知道「某個會員」是第幾名,
因為排序下來雖然正確,可是沒有排行榜重要的「排名」,
我還希望能在pager之後知道「該會員排名第幾」以及「該會員排名在第幾頁」這樣。
更進階一點,還希望可以記錄該會員的排名記錄,每週固定時間抓她的排名數字。
不知有沒有什麼方向讓我參考呢?
另外,有個叫user karma的模組,不知是啥?
Re: 排行榜和排名(排名紀錄)
有一個 hall of fame 模組,沒你的想法複雜,可以參考看看:
http://drupal.org/project/hof
Re: 排行榜和排名(排名紀錄)
不然,用簡單一點的想法。
比方說用Views製作一個熱門文章排行榜,那有辦法在排行的table加上流水號嗎?
這樣才知道這是第幾名的文章。
再進階一點,就是希望能記錄這篇文章上過幾次熱門文章排行榜。
不知這種東西要怎麼取名,所以也不知要去module的哪裡找。或是用什麼方式寫。
Re: 排行榜和排名(排名紀錄)
像這個網站裡面,
http://drupalmodules.com/top-rated
1. Backup and Migrate
2. CAPTCHA
這邊的1和2是怎麼出來的呢?
我希望在query和排序之後,生成編號,變成名次,在想辦法寫回資料庫,這樣就會有名次這個數字了!
Re:
試試
set @rank= 0;
SELECT u.uid, u.access, (@rank:=@rank + 1) as rank
FROM {users} u
INNER JOIN {profile_values} v ON u.uid = v.uid
INNER JOIN {node} n ON u.uid = n.uid
INNER JOIN {node_counter} c ON n.nid = c.nid
INNER JOIN {userpoints} p ON u.uid = p.uid
WHERE v.fid = 2 AND v.value != '' AND u.access != 0 AND u.status != 0
ORDER BY c.totalcount*0.5+p.points*0.5 DESC;