PDA

View Full Version : ذخیره counter ایجاد شده با session در database



amir_monster
دوشنبه 16 مهر 1386, 02:52 صبح
سلام
چطور می توان بدون استفاده از رویداد ""=onclick و در هنگام بسته شدن صفحه توسط کاربر مقدار یک متغیر را در database ذخیره کرد ؟
مثلا برای نوشتن آمارگیر سایت من می خواهم مقدار ایجاد شده session را قبل از بسته شدن صفحه در database ذخیره کنم و یا datatime را برای زمان بازدید کاربر ، من از رویداد ()page_unload هم استفاده کردم اما مقدار مورد نظر در database ذخیره نشد !!

و آیا این روش برای نوشتن آمارگیر سایت می تواند روش مناسبی باشد ؟؟؟

sama01
دوشنبه 16 مهر 1386, 06:40 صبح
بهتر نیست این موضوع را در تاپیک‌های مربوط به شیوه‌های آمارگیری و ثبت بیننده‌های سایت پیگیری کنید. فکر می‌کنم حتی اگر به این سوال در آنجا پاسخ داده نشده باشد، محل به مراتب مناسب‌تری برای پیگیری این بحث باشد.

موفق باشید.

ClaimAlireza
دوشنبه 16 مهر 1386, 08:31 صبح
چطور می توان بدون استفاده از رویداد ""=onclick و در هنگام بسته شدن صفحه توسط کاربر مقدار یک متغیر را در database ذخیره کرد ؟

شما میتونید توی رویداد Session_End فایل Global.asax این کارو به راحتی انجام بدین.

مثلا مقدار session رو توی یه فایل یا دیتابیس ذخیره نمایید.

موفق باشید...

amir_monster
دوشنبه 16 مهر 1386, 12:20 عصر
معذرت می خوام اگه این سوال را نباید اینجا عنوان می کردم ، از ClaimAlireza هم ممنون از جوابتون ، میشه لطفا بگین چطور ذخیره سازی در database را در فایل Global.asax تعریف کنم یا اگه یک نمونه کد بزارین ممنون می شم .

ClaimAlireza
چهارشنبه 18 مهر 1386, 10:50 صبح
من از کد زیر برای تعداد بازدید کنندگان کل و روزانه یه سایت استفاده می کنم.

این کد یه مقداری رو از db میخونه، یکی بهش اضافه میکنه دوباره replace میکنه.

امیدوارم به کارت بیاد:



void Session_Start(object sender, EventArgs e)
{
string strConnection = ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString;
SqlConnection con = newSqlConnection(strConnection);
con.Open();
SqlCommand cmd = newSqlCommand("select number from tb_online where about='all' ", con);
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
string temp = dr["number"].ToString();
dr.Close();
int temp2 = Convert.ToInt32(temp);
temp2++;
SqlCommand cmdu = newSqlCommand("update tb_online set number=@number where about='all' ", con);
cmdu.Parameters.AddWithValue("@number", temp2.ToString());
cmdu.ExecuteNonQuery();
SqlCommand cmdt = newSqlCommand("select date from tb_online where about='today' ", con);
SqlDataReader drt = cmdt.ExecuteReader();
drt.Read();
if (drt["date"].ToString() != DateTime.Now.Date.ToString())
{
drt.Close();
SqlCommand cmdi = newSqlCommand("update tb_online set date=@date,number='1' where about='today' ", con);
cmdi.Parameters.AddWithValue("@date", DateTime.Now.Date);
cmdi.ExecuteNonQuery();
}
else
{
drt.Close();
SqlCommand cmd2 = newSqlCommand("select number from tb_online where about='today' ", con);
SqlDataReader dr2 = cmd2.ExecuteReader();
dr2.Read();
string tempt = dr2["number"].ToString();
dr2.Close();
int tempt2 = Convert.ToInt32(tempt);
tempt2++;
SqlCommand cmdut = newSqlCommand("update tb_online set number=@number where about='today' ", con);
cmdut.Parameters.AddWithValue("@number", tempt2.ToString());
cmdut.ExecuteNonQuery();
}
con.Close();
}


موفق باشید....

amir_monster
چهارشنبه 18 مهر 1386, 11:57 صبح
خیلی از لطفت ممنونم