需要兩張表,一個(gè)是記錄表,一個(gè)是排行表
創(chuàng)新互聯(lián)2013年至今,先為新鄭等服務(wù)建站,新鄭等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為新鄭企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
用戶收藏后,會(huì)在記錄表里記錄一條(id,uid,time)的數(shù)據(jù)
在排行表里判斷是否有uid=當(dāng)前用戶的數(shù)據(jù),如果沒有就創(chuàng)建一條(id,uid,count=1)的數(shù)據(jù),如果有就把uid=uid的這條數(shù)據(jù)更新(set count=count+1)
然后排行榜就直接從排行表里通過(guò)count desc排序就可以了
可以給你的數(shù)據(jù)庫(kù)里面添加一個(gè)投票次數(shù)的字段,根據(jù)這個(gè)字段,查詢時(shí)候SQL語(yǔ)句后面 order by 投票次數(shù) desc 就可以排行了。
命令: select 字段1,字段2,... from 表名 where 表達(dá)式
例如:查看表 MyClass 中前2行數(shù)據(jù)
mysql select * from MyClass order by id limit 0,2;
其實(shí)我感覺你這個(gè)邏輯沒問題,代碼有點(diǎn)問題,我是這么認(rèn)為的,代碼應(yīng)該是這樣
$idzhi = rand(0,表中數(shù)據(jù)條數(shù));
$data = $data['id']; // 我不明白你這里是什么意思
$arr = $m-where($data = $idzhi)-limit(8) -select();
不過(guò)我總感覺上面的有問題
$idzhi = rand(0,表中數(shù)據(jù)條數(shù));
$arr = $m-where("id = $idzhi")-limit(8) -select();
不對(duì)的話就試試這個(gè),我個(gè)人覺得這樣是對(duì)的,不明白你那個(gè)$data['id'];是干嘛用的
sort($arr);由小到大的順序排序(第二個(gè)參數(shù)為按什么方式排序)忽略鍵名的數(shù)組排序
rsort($arr);由大到小的順序排序(第二個(gè)參數(shù)為按什么方式排序)忽略鍵名的數(shù)組排序