برگزیده های پرشین تولز

سوال و جواب در مورد ساختار فوروم ها

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
بله ، درسته

تاپیک و پست شباهتهای زیادی دارند ولی تفاوتهایی هم دارند

قبلا هم چندین بار گفتم :
خودتون میتونین از این لیست مقایسه کنین :

2- پست
دارای این مشخصات است :
آی دی ارسال کننده ، زمان ارسال ، عنوان پست ، تاپیک پدر ، متن پست ، آخرین تاریخ ویرایش ، آدرس IP ارسال کننده

3- تاپیک
دارای این مشخصات است :
شناسه ، عنوان ، شرح،؛تعداد پستها ، تاریخ آخرین به روز رسانی ، ترتیب قرار گیری، شناسه مدیر تاپیک ، شناسه تاپیک پدر


مشخصاتی که در پست هست ولی در تاپیک نیست :
آی دی ارسال کننده ، زمان ارسال ، متن پست ، آدرس IP ارسال کننده (4 مورد از 7 مورد ویيگیهای پست !)

مشخصاتی که در تاپیک هست ولی در پست نیست :

تعداد پستهای تاپیک ، ترتیب قرار گیری ، شناسه مدیر تاپیک
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,284
لایک‌ها
17
سن
39
محل سکونت
North Pole
به نقل از SherlockHolmes :
خوب منظور من از لحاظ پدر فرزندی OOP نبود!!منظور من به طور کلی بود!!ولی در هر صورت پست و تاپیک شباهت های بی نظیری دارند!که از لحاظ آبجکت ارینتد به صلاح نیست دو موجودیتی که اینقدر با هم اشتراک دارند از هم مستقل باشند!!
نوع طراحی شما اولین راهیه که به ذهن طراح میرسه!!ولی این طراحی از نظر من اصولی نیست!!
حالا من توپ رو به زمین شما میندازم!!
ممکنه پراپرتی هاو متد های اضافی موجدیت تاپیک رو نسبت به پست نام ببرید!!
شاید من نکته ای رو ندیدم و پیشبینی نکرده ام!


اینجوری که من به نظرم میاد SherlockHolmes تاپیک رو پست اول هرتاپیک میبینه در صورتی که EndOfCsharp تاپیک رو جدا میدونه و من با دومی موفق تر ام

اما
دارای این مشخصات است :
شناسه ، عنوان ، شرح،؛تعداد پستها ، تاریخ آخرین به روز رسانی ، ترتیب قرار گیری، شناسه مدیر تاپیک ، شناسه تاپیک پدر

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


در مورد اینکه مدیر آیا یه یوزر معمولی اه باید بگم شدیدا و عمیقا من به این مسئله رو قبول دارم (و روش پا فشاری میکنم ) که مدیر و هرچیز دیگه ای یک کاربر معمولی با role متفاوت اه . همینطور کابرای انجمن هم نصبت به پستی که دارن میتونن رولهای مختلف و در نتیجه دستریسی های مختلف داشته باشن !

هیچ اشتباهی نباید پیش بیاد که رولها قاطی بشه این یه امر بدیهی و قابل پیشگیری اه و اصلا صحبتی دربارش نیست !
 

SherlockHolmes

کاربر قدیمی پرشین تولز
تاریخ عضویت
15 می 2004
نوشته‌ها
3,414
لایک‌ها
818
پیشنهاد من اینه که شما روی سیستم اول کار کنید و من هم روی سیستم دوم!(منظور کد نویسی نیست)
و کلاسهای دو تا سیستم رو مشخص کنیم!!
هر کدوم بی عیب تر بود روی اون کار میکنیم!!
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,284
لایک‌ها
17
سن
39
محل سکونت
North Pole
به نقل از SherlockHolmes :
پیشنهاد من اینه که شما روی سیستم اول کار کنید و من هم روی سیستم دوم!(منظور کد نویسی نیست)
و کلاسهای دو تا سیستم رو مشخص کنیم!!
هر کدوم بی عیب تر بود روی اون کار میکنیم!!

اون قسمت تاپیک رو همونطوری که من فکر میکردم شما فرض کرده بودی ؟ (تاپیک و پست اصلی تاپیک میشه تاپیک ) ؟ به نظر من در موردش همینجا بحث کنیم و به نتیجه برسیم بهتره چون تا آخرش هم (حتی اگه تا مرحله پایانی کدنویسی هم پیش بره ) باز همین آشه و همین کاسه !
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
به نقل از H_R :
اینجوری که من به نظرم میاد SherlockHolmes تاپیک رو پست اول هرتاپیک میبینه در صورتی که EndOfCsharp تاپیک رو جدا میدونه و من با دومی موفق تر ام

بسیار خوب ، پس مشکل حله !!! حالا شدیم 2 به یک !!! :blush:

من میگیم بیشتر از این روی این موضوع بحث نکنیم و همین نطر رو بپذیریم !





به نقل از H_R :
در مورد اینکه مدیر آیا یه یوزر معمولی اه باید بگم شدیدا و عمیقا من به این مسئله رو قبول دارم (و روش پا فشاری میکنم ) که مدیر و هرچیز دیگه ای یک کاربر معمولی با role متفاوت اه . همینطور کابرای انجمن هم نصبت به پستی که دارن میتونن رولهای مختلف و در نتیجه دستریسی های مختلف داشته باشن !

کاملا موافقم

بچه ها اگه موافق باشیم بریم سراغ همین موضوع ، یعنی role هایی که یک مدیر میتواند اجرا کند

موفق باشید
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
پیشنهاد من اینه که یک کلاس به نام user داشته باشیم

حالا یک کلاس به نام Manager از این کلاس به ارث میگیریم و role های اضافی که مدیر باید داشته باشه رو به اون اضافه میکنیم
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,284
لایک‌ها
17
سن
39
محل سکونت
North Pole
به نقل از EndOfCsharp :
پیشنهاد من اینه که یک کلاس به نام user داشته باشیم

حالا یک کلاس به نام Manager از این کلاس به ارث میگیریم و role های اضافی که مدیر باید داشته باشه رو به اون اضافه میکنیم

الان به نظرت یه Manager چه پروپرتی های اضافه ای نسبت به یه یوزر معمولی لازم داره . به نظر من مدیر و کاربر هردو از نظر یوزر بودن یه جورن و منیجر هیچ چیز اضافه ای نسبت به یه یوزر معمولا لازم نداره ! فقط رول هاشون باهم فرق میکنه و نسبت به این رولها دسترسی های مختلفی رو دارن !
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
به نقل از H_R :
الان به نظرت یه Manager چه پروپرتی های اضافه ای نسبت به یه یوزر معمولی لازم داره . به نظر من مدیر و کاربر هردو از نظر یوزر بودن یه جورن و منیجر هیچ چیز اضافه ای نسبت به یه یوزر معمولا لازم نداره ! فقط رول هاشون باهم فرق میکنه و نسبت به این رولها دسترسی های مختلفی رو دارن !

راستش رو بخواهی هیچی !!! :rolleyes:

اینطوری دیگه شاید نیازی به کلاس مجزا برای manager نباشه

در مورد role ها چی فکر میکنین ؟

لطفا چند مورد از Role هاس مدیر رو که به نظرتون میرسه بگین
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
به نقل از H_R :
به نظرمن ترتیب قرار گیری یه چیز اضافست ! چون به هرحال هر پست تاریخ ثبت داره و نصبت به تاریخ ثبتش میشه مرتبشون کرد .

QUOTE]]

این ترتیب قرارگیری فقط برای thread ها می باشد نه برای پست ها
ممکنه شرایطی پیش بیاد که بخواهیم به یک thread اولیت بیشتری بدهیم ، مهمتر از تاریخ ایجاد

موفق باشید
 

SherlockHolmes

کاربر قدیمی پرشین تولز
تاریخ عضویت
15 می 2004
نوشته‌ها
3,414
لایک‌ها
818
این ها رو باید در Stored Procedure بوجودH,vni fai!!فقط هر تاپیک یه پراپرتی بولین داره به نام !!sticky
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
بسیار خوب

دوستان یه سوال :

ببینید ، اگر مثلا همین فوروم پرشین تولز رو در نظر بگیریم ، در صفحه اول نام تاپیک های اصلی نوشته شده و نام آخرین پست هر تاپیک هم آورده میشود .

از نظر نرمال بودن ، بهتر این است که در جول تاپیک یک فیلد به نام lastPostId داشته باشیم ، سپس برای نمایش این جدول را با جدول پستها join کنیم و عنوان و زمان اخرین تاپیک را بدست آوریم

از آنجایی که اگر فوروم کاربران زیادی داشته باشد ، مراجعات مکرر و تعدد این کوئری ها میتواند زمانبر باشد ، شاید بهتر باشد که در همان جدول تاپیک ها ، به جای آی دی آخرین پست ، عنوان آنرا نگه داری کنیم تا دیگر نیازی به این join و.... نباشد...

نظر شما چیست ؟
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
فرض کنید میخواهیم لیست تاپیک ها را از دیتابیس بخوانیم و روی صفحه نمایش دهیم.راه حل ابتدایی برای این کار این است که بوسیله یک sqlcommand و دستور Sql مورد نظر ، داده ها را بخوانیم و سپس آنها را به یک GridView انتساب دهیم.

مشکل1- نمی خواهیم همه داده ها نمایش یابند (مثل ID ، و ....)
مشکل 2 – در gridView میخواهیم گاهی اوقات در یم سطر دو خط اطلاعات نمایش یابند.

برای حل مشکل 1 میتوانیم خودمان به طور دستی یک Datatable بسازیم و فیلدهای موردنظرمان را وارد کنیم.
برای حل مشکل دوم در هنگام ساخت Datatable ، بوسیله تگ <br> خطوط را میشکنیم و یا اینکه توسط تگ img تصویر را درون datatable قرار میدهیم.

اما مشکل اصلی اینجاست که هنگامی که این datatable به gridview بایند میشود ، به جای اینکه تگ ها تفسیر شده و تصویر نمایش داده شود ، خود تگ img نمایش داده میشود


نظر شما چیه ؟؟؟؟؟
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,284
لایک‌ها
17
سن
39
محل سکونت
North Pole
به نقل از EndOfCsharp :
اما مشکل اصلی اینجاست که هنگامی که این datatable به gridview بایند میشود ، به جای اینکه تگ ها تفسیر شده و تصویر نمایش داده شود ، خود تگ img نمایش داده میشود

توی تاپیک جداگانه ای که برای این موضوع زدی دربارش بحث میکنیم ;)
 

SherlockHolmes

کاربر قدیمی پرشین تولز
تاریخ عضویت
15 می 2004
نوشته‌ها
3,414
لایک‌ها
818
به نقل از EndOfCsharp :
بسیار خوب

دوستان یه سوال :

ببینید ، اگر مثلا همین فوروم پرشین تولز رو در نظر بگیریم ، در صفحه اول نام تاپیک های اصلی نوشته شده و نام آخرین پست هر تاپیک هم آورده میشود .

از نظر نرمال بودن ، بهتر این است که در جول تاپیک یک فیلد به نام lastPostId داشته باشیم ، سپس برای نمایش این جدول را با جدول پستها join کنیم و عنوان و زمان اخرین تاپیک را بدست آوریم

از آنجایی که اگر فوروم کاربران زیادی داشته باشد ، مراجعات مکرر و تعدد این کوئری ها میتواند زمانبر باشد ، شاید بهتر باشد که در همان جدول تاپیک ها ، به جای آی دی آخرین پست ، عنوان آنرا نگه داری کنیم تا دیگر نیازی به این join و.... نباشد...

نظر شما چیست ؟
دقیقا متوجه نشدم چون همچین چیزی در صفحه اول ندیدم!!ولی...
در مدل طراحی که شما در نظر داشتید باید جدول تاپیک ها رو با جدول پستها JOIN کنید و با اگریگیت فانکشن MAX آخرین پست از لحاظ زمانی رو به همراه تاپیک و مشخصاتش بدست بیارید!!یعنی با این مدل شما یک فیلد LastPost به صورت داینامیک ارید!
 

SherlockHolmes

کاربر قدیمی پرشین تولز
تاریخ عضویت
15 می 2004
نوشته‌ها
3,414
لایک‌ها
818
به نقل از SherlockHolmes :
دقیقا متوجه نشدم چون همچین چیزی در صفحه اول ندیدم!!ولی...
در مدل طراحی که شما در نظر داشتید باید جدول تاپیک ها رو با جدول پستها JOIN کنید و با اگریگیت فانکشن MAX آخرین پست از لحاظ زمانی رو به همراه تاپیک و مشخصاتش بدست بیارید!!یعنی با این مدل شما یک فیلد LastPost به صورت داینامیک ارید!
مشکل1- نمی خواهیم همه داده ها نمایش یابند (مثل ID ، و ....)
روی تایتل فیلد در GridView کلیک میکنیم ودکمه Remove را از لیست منوی دیتابایند میزنیم!!

مشکل 2 – در gridView میخواهیم گاهی اوقات در یم سطر دو خط اطلاعات نمایش یابند.
تا اونجایی که من متوجه شدم باید از Template Field ها استفاده کنید!!

 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
حالا شما برای اینکه اطلاعات رو از دیتابیس بخونیم و نمایش بدیم چی پیشنهاد میدین ؟

منظور از اطلاعات ، پستها ، تاپیکها و ... هستند

روشی که خودم گفتم اون اشکال را داشت ...

شما راه دیگه ای دارید؟
 

SherlockHolmes

کاربر قدیمی پرشین تولز
تاریخ عضویت
15 می 2004
نوشته‌ها
3,414
لایک‌ها
818
اصلا در وب به هیچ وجه استفاده از DataSet توصیه نمیشه!!باید از sqlDataReader و StoredProcedure استفاده کنید!!شکر خدا که Asp.net 2.0 دیتا بایندینگ خیلی جالبی داره . مستقیم میتونید GridView رو به StoredProcedure وصل کنید!
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
به نقل از SherlockHolmes :
اصلا در وب به هیچ وجه استفاده از DataSet توصیه نمیشه!!باید از sqlDataReader و StoredProcedure استفاده کنید!!شکر خدا که Asp.net 2.0 دیتا بایندینگ خیلی جالبی داره . مستقیم میتونید GridView رو به StoredProcedure وصل کنید!

آئوووووووووووووووو

چه جالب !!!!!

حالا چند تا سوال :

1- برای صفحه بندی چی پیشنهاد میدین ؟ دستی اینکار رو بکنیم ؟

2- نحوه بایند شدن به stored procedure رو هم اگه میشه توضیح بدین
 

SherlockHolmes

کاربر قدیمی پرشین تولز
تاریخ عضویت
15 می 2004
نوشته‌ها
3,414
لایک‌ها
818
1:صفحه بندی رحفه ای و راحت فقط با css
2:تو گزینه ی دیتابیس توی ویزارد دیتا بایندینگ هست!!بگردید حتما پیدا میکنید!
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,673
لایک‌ها
67
سن
37
محل سکونت
نصف جهان
این که نشد جواب !!!

ببین من خودم فکر میکنم بهترین کنترل برای این کار Datalist باشه
یک Datatalist میگذاریم روی فرم و کنترلهای درون آن را بایند میکنیم به دیتابیس

نظر شما چیه ؟
 
بالا