14-11-12, 06:17 AM
14-11-12, 08:55 AM
طيب اخواني سؤال آخر كيف اخرج العضو من ضمن المتواجدين الان؟ لاني اضيفه عن طريق تعديل عمود Online=1 عند تسجيل الدخول وعند الخروج اغيرها الى 0 لكن لو لم يسجل خروج ستظل القيمة ثابتة بالقاعدة كيف اعالج الامر؟؟
اخواني انا ابرمج منتدى افضل من اللي انا سويتهم من قبل فارجو المساعدة وشكرا سلفا لكل الاخوان
اخواني انا ابرمج منتدى افضل من اللي انا سويتهم من قبل فارجو المساعدة وشكرا سلفا لكل الاخوان
14-11-12, 01:36 PM
سعود كتب :طيب اخواني سؤال آخر كيف اخرج العضو من ضمن المتواجدين الان؟ لاني اضيفه عن طريق تعديل عمود Online=1 عند تسجيل الدخول وعند الخروج اغيرها الى 0 لكن لو لم يسجل خروج ستظل القيمة ثابتة بالقاعدة كيف اعالج الامر؟؟
اخواني انا ابرمج منتدى افضل من اللي انا سويتهم من قبل فارجو المساعدة وشكرا سلفا لكل الاخوان
الطريقة هي أنك تضع حقل في معلوماته الشخصية يكون من نوع Datatime
وفي كل مرة يقوم المتصفح بعمل للصفحة request أو Postback قم بتحديث هذا الحقل للمستخدم عن طريق الدالة في نفس قواعد البيانات GETDATE
بعد هذه الخطوة نأتي للخطوة التالية : وهي كيف أعرف إن هذا الشخص غادر الموقع أم لا !!؟
نقوم بعمل حسبة بسيطه على كل الآشخاص الذين موجودين online ونقارن تاريخ الحقل الذي عملناه سابقا هل تجاوز مثلا 5 دقائق !! فلو تجاوز نضع في خانة حقل online قيمة false .
كيف نقوم بخطوة الفحص على حالة الموجودين !!!!؟؟
اللي في بالي الان طريقتين :
الطريقة الأولى :
عن طريق Job الموجود في Agent الموجود في SqlServer Managment
بحيث تقوم بعمل job يقوم بفحص الحالات ( كل مثلا دقيقة واحدة ) اللي في حقل online مساوي ل true ويقارن الحقل اللي انشأناه من نوع DateTime ونقارن قيمته !! هل هو أكبر من 5 دقائق !! فلو كان نقوم بتعديل حقل online إلى false
المشكلة في الطريقة هو أن Agent لن يكون لديك صلاحية عليه إلا إذا كنت ادمن على SqlServer Managment .
الطريقة الثانية :
وهي أن تقوم بعملية فحص للحالات في كل عملية Postback لأي صفحة .
وبالتوفيق ...
14-11-12, 02:55 PM
واجهتني نفس المشكلة و حللتها بفضل الله ..
الفكرة هي ان تقوم بصنع تايمر في Global.asax .. و تايمر عند المستخدم .. التايمر الموجود عند المستخدم يقوم بالتاكيد على ان المستخدم موجود بصورة مستمرة .. اما التايمر الموجود في Global.asax فيقوم بحذف جميع من في قائمة onlines .. عند كل دقيقة مثلا .. و هكذا سوف تستطيع فعل ذلك
انظر هذه المشاركة :
http://vb4arb.com/vb/showthread.php?2949...1#post8148
الفكرة هي ان تقوم بصنع تايمر في Global.asax .. و تايمر عند المستخدم .. التايمر الموجود عند المستخدم يقوم بالتاكيد على ان المستخدم موجود بصورة مستمرة .. اما التايمر الموجود في Global.asax فيقوم بحذف جميع من في قائمة onlines .. عند كل دقيقة مثلا .. و هكذا سوف تستطيع فعل ذلك
انظر هذه المشاركة :
http://vb4arb.com/vb/showthread.php?2949...1#post8148
14-11-12, 09:53 PM
بارك الله فيكم اخواني.
بالنسبة للاخ الفاضل [b]macary007 طريقتك احترافية و متقدمة قد احتاج لها قريبا لاني استخدم استضافة مجانية قد لا تتوفر لدي الوصول الكامل.
----------------------------------------------------------
بالنسبة للاخ الفاضل [/b][b]H111er
قمت بتحويل الكود الذي كتبت الى فيجوال بيسك عبر موقع: [/b]http://converter.telerik.com/
واصبح كالتالي:
لكن كيف اجمع بين هذا المتغير
وين متغير تحمله الجلسة وهي مثلا
والذي اخزنه حال تسجيل الدخول
بالنسبة للاخ الفاضل [b]macary007 طريقتك احترافية و متقدمة قد احتاج لها قريبا لاني استخدم استضافة مجانية قد لا تتوفر لدي الوصول الكامل.
----------------------------------------------------------
بالنسبة للاخ الفاضل [/b][b]H111er
قمت بتحويل الكود الذي كتبت الى فيجوال بيسك عبر موقع: [/b]http://converter.telerik.com/
واصبح كالتالي:
كود :
Private Sub Timer_Tick(sender As Object, e As System.Timers.ElapsedEventArgs) Application("onlines") = ""
End Sub
Private Sub Application_Start(sender As Object, e As EventArgs)
' Code that runs on application startup
Application("onlines") = ""
Dim Timer As New System.Timers.Timer()
Timer.Interval = 60000
Timer.Elapsed += New System.Timers.ElapsedEventHandler(Timer_Tick)
Timer.Enabled = True
Timer.Start()
End Subكود :
Application("onlines") = ""كود :
session("tname")15-11-12, 09:41 AM
سعود كتب :بارك الله فيكم اخواني.بالنسبة للكود الذي كتبته حضرتك فلن يعمل .. حتما سوف تحتاج الى السي شارب الا اذا وجدت حل .. عموما لا تقلق فالسي شارب قريبا جدا من الفيجوال بيسك ..
بالنسبة للاخ الفاضل [b]macary007 طريقتك احترافية و متقدمة قد احتاج لها قريبا لاني استخدم استضافة مجانية قد لا تتوفر لدي الوصول الكامل.
----------------------------------------------------------
بالنسبة للاخ الفاضل [/b][b]H111er
قمت بتحويل الكود الذي كتبت الى فيجوال بيسك عبر موقع: [/b]http://converter.telerik.com/
واصبح كالتالي:
لكن كيف اجمع بين هذا المتغيركود :
Private Sub Timer_Tick(sender As Object, e As System.Timers.ElapsedEventArgs) Application("onlines") = ""
End Sub
Private Sub Application_Start(sender As Object, e As EventArgs)
' Code that runs on application startup
Application("onlines") = ""
Dim Timer As New System.Timers.Timer()
Timer.Interval = 60000
Timer.Elapsed += New System.Timers.ElapsedEventHandler(Timer_Tick)
Timer.Enabled = True
Timer.Start()
End Subوين متغير تحمله الجلسة وهي مثلاكود :
Application("onlines") = ""والذي اخزنه حال تسجيل الدخولكود :
session("tname")
بالنسبة لسؤالك يوجد حل باستخدام الـ Split .. و تعامل دقيق مع النصوص .. باذن الله سوف اضع مثال بسيط في قسم المقالات .. و بالتوفيق !
15-11-12, 10:18 AM
خلاص انا غيرت الطريقة الى تخزين المسجلين الى مصفوفة ثم طباعتهم في الرئيسية
http://im30.gulfup.com/p6Zu1.jpg
http://im30.gulfup.com/p6Zu1.jpg
15-11-12, 10:19 AM