如何实现BLOG 记录最近访客???

蝶恋花雨 2008-06-30 03:37:18
如何解决BLOG 记录最近访客的问题?? 怎么实现呢??今天脑袋不好使。想不起来怎么做,思维混乱;
我用cookies获取凡是登陆后在访问我博客的UID并添加到数据库去了下面是我代码:
  cookies = Request.Cookies["UserCookies"];//记录访客

sqls.Fill_DT("select uid from dbo.bbs_users where itemno='" + SQLUtil.FilerSql(space) + "'", dt);
if(dt.Rows.Count>0)//根据博客编号去除用户。判断是是否本人访问进行排除
{
if (cookies != null)
{
string userID = cookies["User_Uid"].ToString();
if(userID!=dt.Rows[0]["uid"].ToString())//两个用户ID不相等的话则记录为访客
{
DataTable dtcaller = new DataTable();
//如果访客人数大于15则进行update最早那个访客
sqls.Fill_DT("select * from dbo.space_MyCaller",dtcaller);
if (dtcaller.Rows.Count > 15)
{
DataTable dtid = new DataTable();
//获取15条数据最早的一条ID并进行update
sqls.Fill_DT("select callerid from dbo.space_MyCaller where callerid=(select top 1 callerid from space_mycaller)",dtid);
if(dtid.Rows.Count>0)
{
sqlt.Operate("update dbo.space_MyCaller set datetime='" + DateTime.Now.ToString() + "',uid='" + userID + "',logitemno='" + space + "' where callerid='"+dtid.Rows[0]["callerid"].ToString()+"'");
sqlt.ConClose();
} sqls.ConClose();
}
else
{
sqlt.Operate("insert into dbo.space_MyCaller(datetime,uid,logitemno) values('" + DateTime.Now.ToString() + "','" + userID + "','" + space + "')"); sqlt.ConClose();
}
}

}
} sqls.ConClose();

谁还有好的代码。贴出来。分大大的有赏,注释只要代码或者很好思路。哈哈 快来抢分。
...全文
670 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
d4262047 2009-05-12
  • 打赏
  • 举报
回复
用数组

不过更新的时候麻烦些
syc958 2008-07-01
  • 打赏
  • 举报
回复
数据里加一个最近登录字段,这样不是解决了你的问题了吗?大网站都是这么做的!
蝶恋花雨 2008-07-01
  • 打赏
  • 举报
回复
现在脑袋好使了结账
lupenda 2008-06-30
  • 打赏
  • 举报
回复
根据登陆时间字段里的值,取最后登录的15个不是更简单吗?
wdzr_826 2008-06-30
  • 打赏
  • 举报
回复
楼上用SQL实现的可行
紫气东来_999 2008-06-30
  • 打赏
  • 举报
回复
MARK
xiaolei1982 2008-06-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xuyiazl 的回复:]
只接分,,,,,,此类问题自己仔细分析下就知道了
[/Quote]
xuyiazl 2008-06-30
  • 打赏
  • 举报
回复
只接分,,,,,,此类问题自己仔细分析下就知道了
wanglei2006 2008-06-30
  • 打赏
  • 举报
回复

declare @uid int
set @uid = 1
if exists(select * from dbo.space_MyCaller where uid = @uid)
begin
update dbo.space_MyCaller set datetime='2008-6-30 17:17:19' where uid= @uid
end

else
if((select count (*) from dbo.space_MyCaller )>14)

begin
update dbo.space_MyCaller set datetime='2008-6-30 17:17:20',uid='1',logitemno='3d35e9fa' where callerid=(select top 1 callerid from dbo.space_MyCaller )
end
else
insert into dbo.space_MyCaller(datetime,uid,logitemno) values('2008-6-30 17:17:21','1','3d35e9fa')
叶子 2008-06-30
  • 打赏
  • 举报
回复
来给蝶恋花雨兄顶个人气!
叶子 2008-06-30
  • 打赏
  • 举报
回复
就是临时表,按时间保留最新的15条!
Eddie005 2008-06-30
  • 打赏
  • 举报
回复
if(userID!=dt.Rows[0]["uid"].ToString())//两个用户ID不相等的话则记录为访客
{
//从这里开始改一下,最好就用一个sql解决就好,逻辑大概如下
if exists(select * from table1 where field1='123' )--如果该访客之前有记录,则更新此记录即可
update table1 set field1='aaaaa'
else
begin
insert into table1 (field1)values('bbbb');---插入记录
delete from table1 where ....;---删除最早的记录
end
}
wanglei2006 2008-06-30
  • 打赏
  • 举报
回复
declare @uid int
set @uid = '" + userID + "'
if exec(select * from select * from dbo.space_MyCaller where uid = @uid)
begin
update dbo.space_MyCaller set datetime='" + DateTime.Now.ToString() + "'where uid= @uid
end
else
if((select count (*) fromdbo.space_MyCaller )>14)
begin
update dbo.space_MyCaller set datetime='" + DateTime.Now.ToString() + "',uid='" + userID + "',logitemno='" + space + "' where callerid= (select top 1 callerid from hsdata..Patient order by datetime asc));//这个具体你自己写
end
else
insert into dbo.space_MyCaller(datetime,uid,logitemno) values('" + DateTime.Now.ToString() + "','" + userID + "','" + space + "')"); ju
componentbbs 2008-06-30
  • 打赏
  • 举报
回复
一个Blog有一个15个数目的值,存数据库,或者其他全局变量数据结构都可以。如果有匹配的就重新排序。没有匹配的就重新Update的一次。
流浪河 2008-06-30
  • 打赏
  • 举报
回复
给分才是正道
流浪河 2008-06-30
  • 打赏
  • 举报
回复
1.从Cookies 获取登录用户
2.先取出数据库最新的15条放到临时表 判断用户是否在记录里面
如果存在则删除对应记录(此时剩14条了)
然后重新添加记录到临时表(保证最新)
否则 直接添加记录 到临时表
3.清空表 space_MyCaller
4.用临时表最新的15条填充 OK了
猩猩明白了吗?
蝶恋花雨 2008-06-30
  • 打赏
  • 举报
回复
晚上回去看有没有合适的代码。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧