الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عدد القراء

مغلق
بدأه فهـ1ـود في 19 يونيو 2007 · 30 رد · 2,285 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أريد عمل كود يظهر لي عدد القراء لصفحة ما. يعني (عدد الذين فتحوا هذه الصفحة)

هل ممكن ذلك

#2

الموضوع ممكن

بس انت لازم تحدد :

- هل نفس الشخص اذا زار الصفحة مرة اخرى تحسب له عدة اخرى

- أين سيتم تخزين قيمة العداد : قاعدة بيانات , مصدر بيانات آخر ...

وسيتم الرد عليك ان شاء الله

#3

أشكرك على الرد السريع

ـ أنا أريد أي شخص يزور الصفحة تحسب له زيارة ، حتى ولو حدث الصفحة فتكون قراءة أخرى.

ـ يتم تخزين قيمة العداد في قاعدة بيانات sql

#4

ممتاز ...

معناها هلأ شو منساوي :

رح افترض انو عندي جدلا جدول يحسب كم عدد الزيارات لهذه الصفحة يوميا وليكن counter...

طيب

هلأ الجدول بنيتو الأساسية هي:

visit_date:Datetime(Default Value=GetDate()).
visit_ip:nvarchar(50).

هلأ عند حدث تحميل الصفحة نضع الكود التالي:

protected void Page_Load(object sender, EventArgs e)
{
//Adding one to the counter
SqlConnection conn = new SqlConnection("Connection String");
			SqlCommand cmd = new SqlCommand(conn, "INSERT INTO counter (visit_ip) values(" + Request.UserHostAddress + ")");
			try
			{
				conn.Open();
				cmd.ExecuteNonQuery();
				conn.Close();
			}
			catch(Exception EE)
			{
				//do something to handle this error
				conn.Close();
			}
}

وهيك منكود دخلنا سجل لهذه الصفحة

هلأ اذا في أكتر من صفحة منعتبر انو في معرف خاص لكل صفحة ومندخل هالمعرف في نفس السجل(باسم page_id) مشان الفلترة

هلأ صار كل شي بسيط وسهل

شوف ما أحلى استخدام عداد الزوار:

//Getting the count

int i=0;
SqlConnection conn = new SqlConnection("Connection String");
			SqlCommand cmd = new SqlCommand(conn, "SELECT Count(*) FROM counter");
			try
			{
				conn.Open();
				i=int.Parse(cmd.ExecuteScalar());
				conn.Close();
			}
			catch(Exception EE)
			{
				//do something to handle this error
				conn.Close();
			}

//Here you can use the i variable in your code easily

ان شاء الله تكون الفكرة وصلت

تم تعديل هذه المشاركة بواسطة Arwany في 19 يونيو 2007 في 15:34

#5

معليش خوي في شيء أنا ما فهمته .. أليس من المفترض أن يكون عمل update بدلا من insert لأن عامل صفحة واحدة ثابتة تظهر فيها جميع المقالات عن طريق الباراميتر ، فمثلا مقالة " أ " لو زاراها اليوم 2 وغداً 2 فإنني أعمل تحديث بحيث يكون المجموع 4

هذا اللي متصوره .. بس مش عارف أعمل له كود لأني أريد أربط ذلك بالباراميتر وما عرفت

يمكن الطريقة التي ذكرتها هي الصح .. لكن ما مشت معي .. انتظر ردك

تم تعديل هذه المشاركة بواسطة فهـ1ـود في 19 يونيو 2007 في 16:51

#6

على كل حال هادا مجرد سجل لحفظ عناوين الأجهزة اللي زارت موقعك

انت شوف شو بدك تخزن فيه وخزن فيه ما في مشكلة

بس أنا عملتو بيخزن عناوين IP للأجهزة

ليك هادا الكود التالي بيجبلك عناوين ال IP للأجهزة دوما

string ip;

ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR");
if(ip==string.Empty)
{
ip=Request.ServerVariables("REMOTE_ADDR");
}

انت استبدلو ووقتها رح تشوف العنوان

تم تعديل هذه المشاركة بواسطة Arwany في 19 يونيو 2007 في 16:51

#7

ارجو قراءة الرد السابق .. فقد قمت بتعديله

ما شاء الله عليك .. رد سريع

تم تعديل هذه المشاركة بواسطة فهـ1ـود في 19 يونيو 2007 في 17:31

#8

لا ليس Update

نحن الغرض من ادخال سجل جديد هوي عمل احصائية نظامية لطلب الصفحة وفي هذه الحالة يجب ادخال سجل جديد لكل طلب

لأنو بالنهاية نحن عم نحسب كم عدد السجلات المدخلة وعلى هالأساس منشوف عدد الزوار

هلأ اذا بدك شي أحلى ممكن تخلي (Admin) مثلا يشوف نفس الاستعلام بس بدل ما يكون مجموع السجلات ... يكون شي تاني

يكون مجموع السجلات (Group by ip)يعني كل واحد كم مرة فتح الصفحة

#9

معليش خوي Arwany أرجو أن تتحملني شوي

أنا قاعد كم ساعة أطبق اللي قلت لي وما مشت معي.

ممكن إذا ما عليك أمر تعطيني مثال يوضح كيف يمكن حساب عدد المشاهدات لكل صفحة، فلو عندي عشرات المقالات ـ طبعا أنا جاعل لها صفحة واحدة ـ أريد عدد المشاهدات لك مقال.

أعذرني أعيد كل شوي وأظنك فاهم قصدي من أول بس المشكلة ما استوعبت الكلام اللي قلت .. ممكن تبسيط شوي.. والأفضل لو فيه مثال يوضح ذلك .. والله يرضى عليك

#10

طيب انتظر شي ربع ساعة وبحملك مثال مع قاعدة بيانات

ولا يهمك

#11

الله يسعدك Arwany

#12

هنا المثال اللي وعدتك فيه

آسف انشغلت شوي فأكل أكتر من ربع ساعة

هلأ ليك :

أنا مستخدم كتير شغلات يمكن تلاقيها جديدة عليك ويمكن تكون معروفة عندك متل Databind (شو بحبو)

وكمان استدعاء تابع ستاتيكي من داخل كود Markup

اذا في أي غموض قلي

في المثال 3 صفحات صفحتين اسمهم : Page.aspx و Other.aspx وهدول بس تفتحهم كل وحدة بتفرجيك كم عدد الزيارات

وفي صفحة تالتة (انت عريف اسمها لحالك) مشان الاحصائيات

Counter.zip

تم تعديل هذه المشاركة بواسطة Arwany في 20 يونيو 2007 في 12:05

#13

الله يعطيك العافية على هذا المثال الرائع .. إلا إنه رفض يشتغل معي ويعطني هذه العبارة

Server Error in '/Counter' Application.

An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

#14

آسف كتير كتير

هلأ في ملف الاعدادات بس استبدل السطر التالي :

<add name="dbs" connectionString="Data Source=.\Ammar;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

بالسطر التالي:

<add name="dbs" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

بعتذر كتير بس أنا منزل SQL Server بغير Instance Name الافتراضي الخاص فيها

هادا هوي الخطأ

آسف مرة تانية

#15

معليش عندي استفسار بسيط:

انت كتبت هذا الكود في صفحة Page

		Count.Add(1, ip);
		Title = "Your IP address is:" + ip;
		CountV = Count.Get(1).ToString();

عندي استفسار حول رقم واحد كما في الكود: إذا كان عندي صفحة واحدة لا تتغير وإنما يتغير المحتوى الذي فيها وهو عبارة عن مقالات، كل مقال يكون في حقل titles في جدول Articles من قاعدة بيانات ، السؤال: اش اضع بدل رقم واحد ؟ لأنك واضع صفحتين لهما رقمين .. وهذا يختلف عما أريد .. أظن واضح استفساري.. ولك تحياتي

#16

آآآآآآه لحظة

انت بدك تشوف الناس اللي قرؤو هالمقال ... بظن هيك ؟

طيب انت خزن هالرقم اللي بتجيبو بالغالب من QueryString بالكود التالي:

int.Parse(Request.QueryString["Article_Id"].ToString());

وحفاظ هالرقم في الجدول الأب في قاعدة البيانات وعميل Statistics على أساس هالرقم

#17

بالضبط خوي .. الله يفتح عليك

عطني فرصة أحاول أجرب اللي قلت .. وإذا ما عرفت أو حدث إشكال ساخبرك . . وتحملني شوي .. أشكرك

#18

ولا يهمك وأهلا وسهلا

#19

والله يا أخي ما عرفت كيف .. خليك معي شوي:

أنا لدي جدول Articles وعندي حقل titles للمقالات وحقل pageVISIT لعدد الزيارات . تمام

في تصوري إني المفروض أعمل Update لأني مش عاوز أعمل جدول جديد لأضع فيه عدد الزوار..

المهم : هل من الممكن عمل ذلك .. وإذا كان ممكن .. فما هو الكود للتعديل .. ولك مني أجمل أحلى التحيات

#20

طيب ولا يهمك

هلأ شوف ... الفكرة انو في كل سجل من سجلات الجدول Articles (اللي هنن مقالات) في حقل عداد (pageVISIT ) بقيمة افتراضية 0

برأيي الشخصي أنشئ (Stored Procedure) بتعطيه رقم المقال بيحدثلك هالحقل بزيادة قيمتو واحد

الطريقة انو نجيب هالرقم ونزيدو واحد ونرجعو لمحلو (بعملية تحديث)

هاي كل الفكرة اذا عندك مشكلة تقنية قلي مشان ساويلك اياها

#21

يا اخوي الموضوع سهل ومانو معقد

يجب ان تستخدم الأحداث التالية

SessionStart ,ٍSessionend

وتضع عداد تزيد قيمته بمقدار واحد في الحدث start وتنقص قيمته بمقدار واحد في الحدث end

#22

بس الأخ بدو يحسب عدد الزيارات مو الزيارات الحالية ...

يمكن توضحت الفكرة أكترعندك

#23
اقتباس
طيب ولا يهمك

هلأ شوف ... الفكرة انو في كل سجل من سجلات الجدول Articles (اللي هنن مقالات) في حقل عداد (pageVISIT ) بقيمة افتراضية 0

برأيي الشخصي أنشئ (Stored Procedure) بتعطيه رقم المقال بيحدثلك هالحقل بزيادة قيمتو واحد

الطريقة انو نجيب هالرقم ونزيدو واحد ونرجعو لمحلو (بعملية تحديث)

هاي كل الفكرة اذا عندك مشكلة تقنية قلي مشان ساويلك اياها

نعم أظن هذا ما أريده بالضبط .. ولكن والله ما عرفت أسويها .. ممكن تسويها لي إذا ما عليك أمر

#24

خلص خليلي اياها بس لبكرا لأنو ما عندي وقت اليوم

ان شاء الله بساويلك اياها بكرا ولا يهمك

#25

خلاص يا الغالي .. بكرا أو بعده .. براحتك .. الله يوفقك

هذا الموضوع مغلق.

مواضيع مشابهة