需要两张表,一个是记录表,一个是排行表
创新互联2013年至今,先为新郑等服务建站,新郑等地企业,进行企业商务咨询服务。为新郑企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
用户收藏后,会在记录表里记录一条(id,uid,time)的数据
在排行表里判断是否有uid=当前用户的数据,如果没有就创建一条(id,uid,count=1)的数据,如果有就把uid=uid的这条数据更新(set count=count+1)
然后排行榜就直接从排行表里通过count desc排序就可以了
可以给你的数据库里面添加一个投票次数的字段,根据这个字段,查询时候SQL语句后面 order by 投票次数 desc 就可以排行了。
命令: select 字段1,字段2,... from 表名 where 表达式
例如:查看表 MyClass 中前2行数据
mysql select * from MyClass order by id limit 0,2;
其实我感觉你这个逻辑没问题,代码有点问题,我是这么认为的,代码应该是这样
$idzhi = rand(0,表中数据条数);
$data = $data['id']; // 我不明白你这里是什么意思
$arr = $m-where($data = $idzhi)-limit(8) -select();
不过我总感觉上面的有问题
$idzhi = rand(0,表中数据条数);
$arr = $m-where("id = $idzhi")-limit(8) -select();
不对的话就试试这个,我个人觉得这样是对的,不明白你那个$data['id'];是干嘛用的
sort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
rsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序