PDA

View Full Version : سوال: گزارش اماری سایت



mohandesan
شنبه 26 دی 1388, 11:49 صبح
من می خواهم برای سایتم یک گزارش اماری داشته باشم به طوری که بتونم تعداد بازدید امروز، دیروز و کل را داشته باشم می دونم که باید از فایل global.asax کنم و ازرویداد sessin-start ولی با این فقط می تونم آمار کل را بدست بیارم چه طور می تونم امار دیروز و امروز را بدست بیارم

ehsan2007
شنبه 26 دی 1388, 12:35 عصر
یک جدول توی دیتابیس بساز سه تا فیلد داشته باشه آمار کل ، آمار امروز ، آمار دیروز
هر بار که آمارو اضافه میکنی چک کن ساعت چنده اگه صبح شده بود یعنی ساعت 00 فیلد آمار امروز رو جمع بزن با آمار کل و آمار دیروز رو مساوی آمار امروز قرار بده و آمار امروز رو مساوی صفر قرار بده

kohyar
شنبه 26 دی 1388, 15:17 عصر
دوست عزيز اگر خيلي حوصله كد نويسي نداري مي توني از سايت هايي كه گزارشات آماري ميدن مثل وب گذر استفاده كني و به سايت اونها لينك بدي

jingiliboyz
شنبه 26 دی 1388, 15:43 عصر
[quote=ehsan2007;889765]یک جدول توی دیتابیس بساز سه تا فیلد داشته باشه آمار کل ، آمار امروز ، آمار دیروز
هر بار که آمارو اضافه میکنی چک کن ساعت چنده اگه صبح شده بود یعنی ساعت 00 فیلد آمار امروز رو جمع بزن با آمار کل و آمار دیروز رو مساوی آمار امروز قرار بده و آمار امروز رو مساوی صفر قرار بده[/quote


آیا برای جمع زدن بازدید دیروز با بازدید کل باید متغیر تعریف بشه و آمار کل و با بازدید امروز توی متغییر جمع بزنیم بعد بریزیم داخل کل یا نه دوم اینکه دیگه با این روش از سیشن استفاده کنیم با نه ؟

silverfox
یک شنبه 27 دی 1388, 09:34 صبح
void Application_Start(object sender, EventArgs e)
{
Application["OnlineUsers"] = 0;
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown

}

void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs

}
void Session_Start(object sender, EventArgs e)
{
Application["OnlineUsers"] = (int)Application["OnlineUsers"] + 1;
SqlCommand cm = new SqlCommand();
SqlConnection cn = new SqlConnection(System.Web.Configuration.WebConfigur ationManager.ConnectionStrings["Connectionstring"].ConnectionString);
cm.Connection = cn;
cm.CommandText = "update pageview set pv = pv + 1 where date = 'total' update pageview set pv = pv + 1 where date = '" + DateTime.Now.Day + "' update pageview set pv = pv + 1 where date = 'thismonth'";
cm.CommandType = CommandType.Text;
cm.Connection.Open();
cm.ExecuteNonQuery();
cm.Connection.Close();
cm.Dispose();

if (DateTime.Today.Day == 1)
{
cn.Open();
SqlCommand cmdCount = new SqlCommand("SELECT pv FROM pageview where date = 'runonce'", cn);
int no = (int)cmdCount.ExecuteScalar();
cn.Close();
if (no == 1)
{
SqlCommand cm2 = new SqlCommand();
cm2.Connection = cn;
cm2.CommandText = "update pageview set pv = (select pv from pageview where date = 'thismonth') where date = 'lastmonth' update pageview set pv = '0' where date = 'thismonth' declare @i int set @i = 1 while @i<32 begin update pageview set pv = 0 where date = convert(varchar(50),@i) set @i = @i + 1 end update pageview set pv = '0' where date = 'runonce'";
cm2.CommandType = CommandType.Text;
cm2.Connection.Open();
cm2.ExecuteNonQuery();
cm2.Connection.Close();
cm2.Dispose();
}
}
if (DateTime.Today.Day == 2)
{
SqlCommand cm3 = new SqlCommand();
cm3.Connection = cn;
cm3.CommandText = "update pageview set pv = '1' where date = 'runonce'";
cm3.CommandType = CommandType.Text;
cm3.Connection.Open();
cm3.ExecuteNonQuery();
cm3.Connection.Close();
cm3.Dispose();
}
}

void Session_End(object sender, EventArgs e)
{
Application["OnlineUsers"] = (int)Application["OnlineUsers"] - 1;
}
یه جدول توی دیتابیس نیاز هست به نام pageview با یه فیلد pv و date
date این مقادیر رو داره(این رکورد ها)
total,lastmonth,thismonth,1,2,3,....,31,runonce
فقط یه مشکلی داره اونم اینه که اگه 2روز اول ماه بازدید کننده نداشته باشه سایت و کد اجرا نشه بازدید 2ماه میره توی 1ماه البته احتمالش کمه ولی ممکنه...البته دوست عزیز تحلیل این کد و فهمیدن اینکه کلا چجوریه روش کار خیلی مهمتره از خود کد شاید کمکت کنه خودت بهترشو بنویسی و کاملترش رو...

adlin2000
سه شنبه 13 بهمن 1388, 11:43 صبح
با تشکر از کدی که نوشتین .
تا اونجایی که من می دونم وقتی از کدهای زمان یا تاریخ که تو بالا نوشتین استفاده می کنیم سایت ساعت و تاریخ کامپیوتر کاربر رو نشون میده و نه تاریخ و ساعت سیستم رو ، بنابراین اگه این تاریخ یا ساعت اشتباه باشه آیا کل آمار گیری رو خدشه دار نمی کنه ؟

منتظر جوابتونم

silverfox
سه شنبه 13 بهمن 1388, 15:09 عصر
کد های جاوا اسکریپت سمت کلاینت هستند و خب ساعت رو هم از سیستم کاربر می گیرند اگه بخوان...ولی این کدها سمت سرور اجرا می شه و خب ساعت و تاریخ و همه چیشم ساعت سروره...اگرم بخواین ساعت مثلا تهران باشه راه حلش اینه که تبدیل به gmt کنین بعد 3:30 اضافه کنین بهش...ولی گفتم مال سرور هست تاریخ و ساعت به هم نمی ریزه...خودم دارم ازش استفاده می کنم خیلی وقته مشکلی نداشته...

adlin2000
سه شنبه 13 بهمن 1388, 17:14 عصر
ضمن تشكر فراوان ، نحوه تبديل ، ساعت گرينويچ رو ميشه بگين ؟

silverfox
سه شنبه 13 بهمن 1388, 18:10 عصر
DateTime.Now.ToUniversalTime();