重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
$conn
为城固等地区用户提供了全套网页设计制作服务,及城固网站建设行业解决方案。主营业务为成都网站建设、网站制作、城固网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
=
mysql_connect('localhost','root','123');
mysql_select_db('db_name');
//数据库名
mysql_query('set
names
utf8',$conn);
#$res
=
mysql_query('select
count(*)
from
user',$conn);
//统计user表里总共有多少条数据
#$res
=
mysql_query('select
*
from
user',$conn);
//把user里面的数据全部显示出来
$arr
=
array();
while($data
=
mysql_fetch_assoc($res))
{
$arr[]
=
$data;
}
print_r($arr);
可以依次把上面查询语句前面的注释去掉查看效果
您好,很高兴回答您的问题,希望我的回答能帮助到您,蟹蟹
用户在线时长计算,首先,用户登录成功把登录时间以及用户id保存在session中
当用户退出时,当前时间减去登录时间就是用户在线时长
//用户登录
public function dologin(){
$adminname = I("param.adminname","","trim");//用户名
$password = I("param.password","","trim");//密码
$where = "adminname = '{$adminname}' and password = md5('{$password}')";
$data['login_time'] = time();
$is_find = M("users_admin")-where($where)-find();
if($is_find){
$result = M("users_admin")-where($where)-setField($data);
if ($result){
$_SESSION['uid'] = $is_find['id'];
$_SESSION['login_time'] = $data['login_time'];
echo("登录成功");
}
}
}
//用户退出代码
public function logout(){
$login_time = $_SESSION['login_time'];
$now = time();
$line_time = $now-$login_time;
$result = M("users_admin")-where("id = ".$_SESSION['uid'])-setField('line_time',$line_time);
session(null);
echo("成功退出");
}
“用户退出或者关闭浏览器SESSION消失的时候在线用户表删除相对应的数据”
这里不可行。。服务器没办法获取这个信息的。都是被动请求的。
要换个思路,要用js或者其它方式定时触发删除。。
一般15分钟或者30分钟。。
数据库还要记录IP,记录最近一次触发时间。
原理:根据不同的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 ) . "人在线";
先来创建数据库.
CREATE TABLE IF NOT EXISTS `ad_count` (
`ad_id` int(8) NOT NULL auto_increment,
`ad_hit` int(8) NOT NULL default '0',
`ad_name` varchar(200) character set gb2312 default NULL,
`ad_datetime` datetime default NULL,
`ad_qq` varchar(15) character set gb2312 default NULL,
`ad_url` varchar(900) character set gb2312 NOT NULL,
`ad_price` int(8) NOT NULL,
PRIMARY KEY (`ad_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
数据创建好了我们就开始写程序了.数据连接我不不写了,
?php
require_once("......省了");
$ad_id =get_value('ad_id','');这里下面有讲
if(is_numeric( $ad_id ) ){
$ad_select="select ad_id,ad_url from ad_count where ad_id='$ad_id' limit 1";
$ad_update="Update ad_count set ad_hit=ad_hit+1 where ad_id='$ad_id' limit 1";
$ad_result=mysql_query($ad_select) or die('id error');
if( mysql_num_rows( $ad_result) ){
mysql_query($ad_update);
$ad_rs=mysql_fetch_array($ad_result);
header("location:".$ad_rs['ad_url']);
mysql_free_result($ad_rs);
}
}
function htmltohtml($Str){
$temp =str_replace(chr(13),'br/',$Str);
$temp =str_replace('','',$Str);
$temp =str_replace('','',$Str);
$temp =addslashes($Str);
return $temp;
}
function get_value($value,$para){
return htmltohtml(empty($para)?(isset($_GET[$value])?$_GET[$value]:''):(isset($_POST[$value])?$_POST[$value]:''));
}
然后我们再在要显示广告的地方如下写.
'a href=/cp/ad_count.php?ad_id=2 target=_blankimg src=/ad_a/ad2.gif border=0 //a
统计,就是把基本的数据,整合起来。
用到sql的,有group by 功能,count功能,order by功能等等。
sql将收集的数据,进行统计分析。
一般情况下,sql处理后得到的数据,还要通过php的逻辑来进行整理。
以一定的格式,展示到前台。
一般都是以数组的方式展示,这也是数据结构的概念。
看这张图片,基本想想结构大概为
{上线数,出单总数,核过总数,总人均,总核率,{(坐席人1,工号1,出单数1,发货数1,核单率1),(坐席人2,工号2,出单数2,发货数2,核单率2)}}
如果用php展示成上面的结构的话,就很好处理了。