PDA

View Full Version : سوال: ایجاد فیلتر در نمایش به صورتی گروهی و کاربری



leaping
چهارشنبه 13 خرداد 1394, 15:20 عصر
سلام دوستان
اگه بخوایم یک سری از مطالب وب سایت رو بر اساس اینکه چه کاربر یا چه گروهی ایجادش کرده رو برای یک سری از گروهای کاربری و یا کاربرهای دیگه فیلتر کنیم.
با این توضیح که جدول لیست کاربران و گروه کاربری در یک دیتابیس و مطالب درون یک دیتابیس دیگه هست
خب اگر بخوایم اینکارو بکنیم اینه که در موقع فچ کردن اطلاعات از همون کوئری فیلتر رو بگذاریم و مثلا بگیم فلان کاربر و فلان گروه برای فلان کاربر و یا فلان گروه دسترسی نداشته باشند.از اونجایی که آیدی کاربر ثابت هست میشه فیلتر رو به صورت صحیح ایجاد کرد خب تا اینجا صحیح اما اگه بخوایم بر اساس گروه کاربری اونرو فیلتر کنیم یک مشکل وجود داره اونم اینکه گروه کاربری میتونه تغییر کنه و ثابت نیست و مثلا اگه فلان کاربر در زمان ایجاد فلان مطلب یک گروه کاربری خاص داشته در زمان حال میتونه یک گروه کاربری دیگه ای داشته باشه و عملا این نوع فیلتر نسبت به زمانی عمل میکنه اون کاربر در اون گروه بوده.
امیدوارم منظوظرم رو به خوبی رسونده باشم

H:Shojaei
پنج شنبه 14 خرداد 1394, 13:49 عصر
خوب باید طوری عمل کنید که گروه کاربر اگر به صورت دستی هم تغییر کرد یه جایی ذخیره شده باشه راه دیگه ای که فکر نمیکنم وجود داشته باشه یا یه فیلد دیگه واسه گروه دسترسی داشته باشید...
البته اگر چیزی که گفتید رو درست متوجه شده باشم...

leaping
پنج شنبه 14 خرداد 1394, 14:53 عصر
خوب باید طوری عمل کنید که گروه کاربر اگر به صورت دستی هم تغییر کرد یه جایی ذخیره شده باشه راه دیگه ای که فکر نمیکنم وجود داشته باشه یا یه فیلد دیگه واسه گروه دسترسی داشته باشید...
البته اگر چیزی که گفتید رو درست متوجه شده باشم...
خب دوست عزیز دخیره میشه اما اینطوری فکر کن
مثلا در یک جدول هست مطالب وب سایت یا اخبار وب سایت
برای هر خبری که ارسال شده آیدی کاربر و گروه کاربری هم درش تعیین میشه
اینطوری فیلتر اعمال میشه برای هر مطلب
اما اگه یه وقت کاربر گروه کاربریش تغییر کنه باید بیایم همه پست هایی که اون کاربر درش دخیل بوده رو اصلاح کنیم و گروه کاربری رو تغییر بدیم یه فاجعه ست تقریبا برای دیتابیس فشار زیادی بهش تحمیل میشه
دنبال یه راه جایگزین هستم

H:Shojaei
پنج شنبه 14 خرداد 1394, 15:07 عصر
فکر کنم سناریویی که نوشتید واسه کاری که میخواید انجام بدین اشتباه باشه آخه کاربر که بخواد گروهش تغییر کنه بخواید اون پست هایی که تو گروه قبلی که بوده رو تا وقتی گروهش عوض شده ببینه یا باید یه جدول داشته باشید که پست رو به کاربر تخصیص بدین که اصلا عقلانی نیست یا این که گروه هایی که کاربر عوض میشه توشون رو با ذکر تاریخ یه جا درج کنید و وقتی گروه کاربر رو هم عوض میکنید تاریخش رو ذکر کنید و مطالب رو هم تاریخ بزنید بعد بگید مطالب گروه فلان که کاربر قبلا بوده تا تاریخی که گروهش عوض شده اون مطالب رو بیار و همچنین گروهی که الآن هست ولی این به کار زیادی نیاز داره بازم...

leaping
پنج شنبه 14 خرداد 1394, 18:25 عصر
ببین دوست من
این قضیه رو به صورت کامل من حل کردم و با همون تغییر گروه کاربری در کلیه جداول انجام میشه اما سنگینه
ولی در مورد اشتباه بودن سناریو که گفتین کمی گیج شدم
چی اشتباهه؟

فرض کنید شما در حال حاضر درون یک گروه کاربری مثلا مدیریت هستید
و یک قسمت از وب سایت هم هست به نام آمار بازدید
در این قسمت کلیه آمار ورود و خروج های وب سایت ثبت میشه
خب میخوایم مثلا سطح دسترسی متصدی به قسمت آمار بازدید دسترسی داشته باشه اما نتونته ورود و خروج های مثلا گروه های مدیریتی رو مشاهده کنه
خب در این صورت باید برای هر بازدیدی که زا طریق مدیریت صورت گرفته آیدی کاربری و گروه کاربریش در اون رکورد ثبت و ضیط بشه
خب حالا در کوئری درخواست شده برای سطح متصدی ما میایم گروه مورد نظرمون رو فیلتر میکنیم و نمیبینه
حالا اگر در آینده اون مدیر به سطح کاربری تغییر دسترسی داده شد ما میخوایم اون آمار قبلیش قابل مشاهده باشه
خب در این صورت باید گروه کاربریش رو در همه اون رکوردها تغییر بدیم عایا؟

H:Shojaei
پنج شنبه 14 خرداد 1394, 18:53 عصر
ببین دوست من
این قضیه رو به صورت کامل من حل کردم و با همون تغییر گروه کاربری در کلیه جداول انجام میشه اما سنگینه
ولی در مورد اشتباه بودن سناریو که گفتین کمی گیج شدم
چی اشتباهه؟

فرض کنید شما در حال حاضر درون یک گروه کاربری مثلا مدیریت هستید
و یک قسمت از وب سایت هم هست به نام آمار بازدید
در این قسمت کلیه آمار ورود و خروج های وب سایت ثبت میشه
خب میخوایم مثلا سطح دسترسی متصدی به قسمت آمار بازدید دسترسی داشته باشه اما نتونته ورود و خروج های مثلا گروه های مدیریتی رو مشاهده کنه
خب در این صورت باید برای هر بازدیدی که زا طریق مدیریت صورت گرفته آیدی کاربری و گروه کاربریش در اون رکورد ثبت و ضیط بشه
خب حالا در کوئری درخواست شده برای سطح متصدی ما میایم گروه مورد نظرمون رو فیلتر میکنیم و نمیبینه
حالا اگر در آینده اون مدیر به سطح کاربری تغییر دسترسی داده شد ما میخوایم اون آمار قبلیش قابل مشاهده باشه
خب در این صورت باید گروه کاربریش رو در همه اون رکوردها تغییر بدیم عایا؟
البته اشتباه منظورمو رسوندم اشتباه نیست به دلیل سنگین بودن عملیات عقلانی نیست همچین کاری مگر تعداد کاربرانی که بخواد این عملیات روشون انجام بشه کم باشه که دقیقا من همین بخش:

خب در این صورت باید برای هر بازدیدی که زا طریق مدیریت صورت گرفته آیدی کاربری و گروه کاربریش در اون رکورد ثبت و ضیط بشه

رو گفتم که سنگین میشه کار و مورد اول راه حلم بود...
روش دوم هم که گفتم فکر کنم جواب شما تا حدودی باشه...
یه بار تاپیک قبلیم رو بخونید متوجه بشید منظورم چیه شاید راه خوبی بود...
در کل میگم شما بیاید وقتی متصدی رو به سطح کاربری تغییر سطح میدین تاریخ اون رو در دیتابیس درج کنید و کارهایی هم که کرده در دوران متصدی بودنش اونها رو هم همراه با تاریخ ایجاد درج کنید...
حالا دیگه وقتی واسه این کاربر که متصدی بوده مطلبی خواستید نمایش بدین اونهایی رو که تاریخشون قبل از زمانی هست که کاربر بشه رو نمایش بدین...
به نظرم بهترین روش همین باشه چون هر روش دیگه ای نیاز به ثبت رکورد های زیادی در جداول داره مثل همین کاری که انجام دادید و سنگین شده...