PDA

View Full Version : سوال: سناريو PM



UnnamE
پنج شنبه 01 اردیبهشت 1390, 13:18 عصر
رفقا من يكن گيج شدم، در برنامه هايي كه به كاربران توانايي ارسال PM ميديم خب بايد اجازه داد كاربر pm هاش رو هم delete كنه
من همين اش سوال ـه واسم، وقتي كاربر Inbox اش رو خالي كنه يعني اينكه pm ها رو delete كرده
مشكل اينجاست كه اگه عملا pm رو از db حذف كنيم اين pm از قسمت پيام هاي ارسالي كاربري كه پيام رو واسه كاربر ما فرستاده هم حذف ميشه
گرفتين چي ميگم كه؟
حالا اگه همين سناريو delete كردن pm رو يكم وا كنيد مرسي ميشم

fcsooti
پنج شنبه 01 اردیبهشت 1390, 15:04 عصر
شما می تونید 2تا فیلد اضافه کنید مثلا به نام sender_view و reciver_view با مقدار 1 وقتی کاربری که دریافت کرده پی ام رو اونو پاک می کنه مقدار reciver_view بشه صفر وقتی که کسی که فرستاده پاک کنه sender_view صفر بشه، وقتی که این مقدار برای هر کدوم صفر بود اون پیام تو لیستش نمایش داده نمشه و وقتی هم که هر 2 مقدار صفر می شن کلا اون سطر پاک بشه.

UnnamE
پنج شنبه 01 اردیبهشت 1390, 15:13 عصر
اين رو خودم هم خواستم پياده كنم، ولي واقعا راه ديگه اي نيست؟
آخه داشتن دو تا فيلد براي چنين كاري يكم مسخره است
البته هرچند راه ديگه اي هم به نظر من نميرسه
ولي http://wiki.mybb.com/index.php/Database_Tables/mybb_privatemessages رو ببين
ساختار ديتابيس mybb واسه PM هست
من چنين راهكاري رو نديدم

sargardoon
پنج شنبه 01 اردیبهشت 1390, 15:33 عصر
دوتا جدول داشته باشی در یکی ارسال و در دیگر دریافت باشه، زمانی که کاربر الف برای کاربر ب پیغام میده در هر دو جدول نشون داده میشه. (برای کاربر الف از جذول ارسال و برای کاربر ب از جدول دریافت اطلاعات گرفته میشه.) هر کدام از اینها پاک بشه مشکلی برای دیگری به وجود نمیاد.

UnnamE
پنج شنبه 01 اردیبهشت 1390, 15:36 عصر
دوتا جدول داشته باشی در یکی ارسال و در دیگر دریافت باشه، زمانی که کاربر الف برای کاربر ب پیغام میده در هر دو جدول نشون داده میشه. (برای کاربر الف از جذول ارسال و برای کاربر ب از جدول دریافت اطلاعات گرفته میشه.) هر کدام از اینها پاک بشه مشکلی برای دیگری به وجود نمیاد.

نه بابا ديگه اين خيلي وحشتناك ميشه، من واسه 2 فيلد اش دل غنجوره ميرم، چژه برسه به دو تا جدول!
بعدش واسه report گيري و خيلي كاراي ديگه مشكل ايجاد ميشه

sargardoon
پنج شنبه 01 اردیبهشت 1390, 15:43 عصر
توی این نمونه ای که معرفی کرده بودی فیلدی نداشت که پیغام های ارسال شده را برای فرستنده ذخیره کنه.
برای تهیه گزارش که کاری نداره، اگر با دوتا جدول مشکل داره راه حلت همون هستش که دوست عزیز fcsooti گفته بودند

fcsooti
پنج شنبه 01 اردیبهشت 1390, 17:19 عصر
اين رو خودم هم خواستم پياده كنم، ولي واقعا راه ديگه اي نيست؟
آخه داشتن دو تا فيلد براي چنين كاري يكم مسخره است
البته هرچند راه ديگه اي هم به نظر من نميرسه
ولي http://wiki.mybb.com/index.php/Database_Tables/mybb_privatemessages رو ببين
ساختار ديتابيس mybb واسه PM هست
من چنين راهكاري رو نديدم
خب یه فیلد بزار، مثلا اگه مقدارش 1 بود هر دو طرف ببینن، اگه 2 بود فرستنده پاک کرده، اگه 3 بود گیرنده پاک کرده.

UnnamE
جمعه 02 اردیبهشت 1390, 12:11 عصر
خب یه فیلد بزار، مثلا اگه مقدارش 1 بود هر دو طرف ببینن، اگه 2 بود فرستنده پاک کرده، اگه 3 بود گیرنده پاک کرده.
آها از اين خوشم اومد، +1 داش
با اين تفاوت فيلد من از 0 شروع ميشه تا 3 :D
x0: هردو ميبينن
x1: ارسال كننده حذف كرده
x2: گيرنده حذف كرده
x3: هردو حذف كردن و pm بطور واقعي delete ميشه!

كد اش رو gist (https://gist.github.com)انداختم https://gist.github.com/936250
مرسي

sargardoon
شنبه 03 اردیبهشت 1390, 08:43 صبح
آها از اين خوشم اومد، +1 داش
با اين تفاوت فيلد من از 0 شروع ميشه تا 3 :D
x0: هردو ميبينن
x1: ارسال كننده حذف كرده
x2: گيرنده حذف كرده
x3: هردو حذف كردن و pm بطور واقعي delete ميشه!

كد اش رو gist (https://gist.github.com)انداختم https://gist.github.com/936250
مرسي

ایده جالبی بود

Mahdi.Spirit
شنبه 03 اردیبهشت 1390, 11:10 صبح
آها از اين خوشم اومد، +1 داش
با اين تفاوت فيلد من از 0 شروع ميشه تا 3 :D
x0: هردو ميبينن
x1: ارسال كننده حذف كرده
x2: گيرنده حذف كرده
x3: هردو حذف كردن و pm بطور واقعي delete ميشه!


ديگه x3 رو نميخاد كه! همون نوشته قبل از ويرايش درست تر بود
3 حالت داره (0 تا 2) ‌،‌ توي حالت چهارم delete‌ ميشه و احتياجي به درجش نيست ! مگر اينكه نخواهيد اطلاعات از ديتابيس حذف كنيد

UnnamE
شنبه 03 اردیبهشت 1390, 11:23 صبح
ديگه x3 رو نميخاد كه! همون نوشته قبل از ويرايش درست تر بود
3 حالت داره (0 تا 2) ‌،‌ توي حالت چهارم delete‌ ميشه و احتياجي به درجش نيست ! مگر اينكه نخواهيد اطلاعات از ديتابيس حذف كنيد
متوجه نشدم، يكم بيشتر توضيح بدي ممنون ميشم!

Mahdi.Spirit
شنبه 03 اردیبهشت 1390, 11:32 صبح
منظورم اينه كه وقتي گيرنده حذف كرد ،‌اگر وضعيت x1 بود ،‌ پيام حذف ميشه يا اگر فرستنده حذف كرد و وضعيت x2 بود بازم پيام حذف ميشه ،‌به نظرم لازم نيست دوباره يه وضعيت x3 تعريف بشه كه بعدا چك بشه اگر x3 شد پيام حذف بشه

UnnamE
شنبه 03 اردیبهشت 1390, 11:39 صبح
منظورم اينه كه وقتي گيرنده حذف كرد ،‌اگر وضعيت x1 بود ،‌ پيام حذف ميشه يا اگر فرستنده حذف كرد و وضعيت x2 بود بازم پيام حذف ميشه ،‌به نظرم لازم نيست دوباره يه وضعيت x3 تعريف بشه كه بعدا چك بشه اگر x3 شد پيام حذف بشه
بله بله، ولي فقط Query بيشتري ايجاد ميشه
فقط براي اينكه بدونيم در چه وضعيتي قرار داره مجبور به excute كويري ها ميشيم، و فقط تعداد شرط ها بالا ميره!
--
آها حالا ديدم اون پست قبلي رو ويرايش كردي، 220% من نميخوام pm رو واقعا حذف كنم، عواملي مث flag كردن و report باعث ميشه نخوام اون رو واقعا حذف كنم!

as13851365
شنبه 03 اردیبهشت 1390, 14:10 عصر
روش خوبی رو معرفی کردید ولی این بیشتر برای ارتباط بین دو طرف هست یعنی یک پیام برای یک نفر ارسال بشه

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

Mahdi.Spirit
شنبه 03 اردیبهشت 1390, 15:11 عصر
نه دیگه در اونصورت باید وضعیت برای هر كاربر توی یه فیلد جدا توی یه جدول دیگه ثبت بشه
اصلا از اساس فكر كنم باید تغییر كنه

UnnamE
شنبه 03 اردیبهشت 1390, 17:00 عصر
آره درسته، براي ارتباط 2 طرفه هست
در صورتي كه بخوايم PM براي بيش از دو نفر باشه بايد رابطه m2m داشته باشيم.
كه به قول خودتون نياز به تغيير اساسي داره، فعلا انتظار تا همين حد از اين برنامه ميره.
ولي بعد از تكميل باس توسعه اش بدم

sargardoon
شنبه 03 اردیبهشت 1390, 18:14 عصر
آره درسته، براي ارتباط 2 طرفه هست
در صورتي كه بخوايم PM براي بيش از دو نفر باشه بايد رابطه m2m داشته باشيم.
كه به قول خودتون نياز به تغيير اساسي داره، فعلا انتظار تا همين حد از اين برنامه ميره.
ولي بعد از تكميل باس توسعه اش بدم
سعی کنید اگر میخواهید برنامه جامعه ای داشته باشید به فکر تمامی نکات باشید و برنامه ای بسازید که انعطاف پذیر باشه. فکر کنم برای این روش میتونید از آرایه هم استفاده کنید برای مثال مقدار key را ایدی کاربر بذار و مقدار val هم همین اعدا 0-2 بذارید. البته در این روش مقدار کد نویسی زیاد میشه.

hosseintdk775
یک شنبه 04 اردیبهشت 1390, 00:55 صبح
بسم الله الرحمن الرحیم
سلام
تو فروم ساز mybb یا phpbb قبلا دیده بودم که برای هر پیام یه رکوردی ثبت میکنه
یه رکورد برای فرستنده
و یکیش هم واسه گیرنده

و با افزایش تعداد گیرنده ها هم مشکلی پیش نمی یاد
فقط تعداد کوئریت زیاد می شه