SELECT xx1,COUNT(xx1) AS c FROM 表名 GROUP BY xx1 ORDER BY c DESC
成都创新互联-专业网站定制、快速模板网站建设、高性价比太和网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式太和网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖太和地区。费用合理售后完善,10年实体公司更值得信赖。
使用COUNT结合GROUP BY去查询,得到的结果再进行排序即可。这样不需要用到PHP,只要一个SQL语句就搞定了。
原理:根据不同的IP统计出当前有多少人在线。
实现方式:可以用数据库,也可以用文本。
我这里用了文本实现。
$user_online = "count.php"; // 保存人数的文件
touch ( $user_online ); // 如果没有此文件,则创建
$timeout = 30; // 30秒内没动作者,认为掉线
$user_arr = file_get_contents ( $user_online );
$user_arr = explode ( '#', rtrim ( $user_arr, '#' ) );
print_r ( $user_arr );
$temp = array ();
foreach ( $user_arr as $value ) {
$user = explode ( ",", trim ( $value ) );
if (($user [0] != getenv ( 'REMOTE_ADDR' )) ($user [1] time ())) { // 如果不是本用户IP并时间没有超时则放入到数组中
array_push ( $temp, $user [0] . "," . $user [1] );
}
}
array_push ( $temp, getenv ( 'REMOTE_ADDR' ) . "," . (time () + ($timeout)) . '#' ); // 保存本用户的信息
$user_arr = implode ( "#", $temp );
// 写入文件
$fp = fopen ( $user_online, "w" );
flock ( $fp, LOCK_EX ); // flock() 不能在NFS以及其他的一些网络文件系统中正常工作
fputs ( $fp, $user_arr );
flock ( $fp, LOCK_UN );
fclose ( $fp );
echo "当前有" . count ( $temp ) . "人在线";
可以提供简单的方法:(基于你用的是tp,对于做cache缓存也不影响统计,毕竟是访问了控制器方法)
第一:当访问这个页面的时候,对应的有控制器,在控制器中做一个操作,每被访问这个页面一次给数据库那个字段加1(这个不精准)
第二:获取访问页面人的ip地址,在数据库存记录,每此访问此页面也就是控制器 就做同样的操作,前提是判断这个人的ip是否存在,存在证明已访问过。(稍微精确点)
当然还有不少其他的方法,这里是比较简单的。希望可以帮助到
用sql查询语句就能实现 例如 你的表名叫student 里面的性别字段是sex
查询男生有多少人
select count(*) as c from student where sex='男'
查询女生有多少人
select count(*) as c from student where sex='女'
然后在php里用MySQL_fetch_row就能得出结果了