07-06-1394، 10:52 ق.ظ
(آخرین تغییر در ارسال: 07-06-1394، 06:12 ب.ظ توسط clickpatogh.)
ارسالها: 27
موضوعها: 7
تاریخ عضویت: تير 1394
اعتبار:
1
تشکرها: 3
7 بار تشکر شده در 7 پست
باسلام
من یک تیبل در دیتابیس دارم که دراون تعدادی کاربر هستش.ودریک بخشی از اون تیبل کد معرفشون قرار داره.میخوام وقتی کاربری با لینک معرف کاربری وارد شد اگر کاربر حداکثر تعداد زیرمجموعه رو داشت.فعال ترین کاربر انتخاب و به عنوان زیرمجموعه اون ذخیره بشه اگر زیرمجموعه اون هم تکمیل بود به عنوان زیرمجموعه فعال ترین زیرمجموعه اون ذخیره شود و...
اگر دوستان روشی بلد هستند ممنون خواهم شد که ارائه بدن.
ارسالها: 16
موضوعها: 6
تاریخ عضویت: خرداد 1394
اعتبار:
0
تشکرها: 7
1 بار تشکر شده در 1 پست
دوست عزیز شما علاوه بر جدول user به جدول دیگه ای برای نگهداری این ارتباطات نیاز دارید که اون جدول دو فیلد داره parent_user و child_user
حالا شما توی اکشن ثبت نام بصورت متد GET آی دی parent_user رو به فرم میدین این فیلد میتونه مخفی باشه. و سپس آی دی گرفته شده و آی دی جدید در جدول مذکور ذخیره میشن.
اما در ذخیره این ارتباطات به شرطی که گفتید نیاز دارید. که با یک کوئری ساده تعداد parent_user های ثبت شده با این آی دی استخراج میشه و اگر کمتر از مقدار مورد نظر شما بود روال عادی کار اجرا میشه .
وگرنه کوئری میزنید و تمام id های زیر مجموعه این یوزر رو بدست میارید(child_user ها) حالا یه متغیر max=0و یه متغیر id تعریف میکنیم و دستور foreach که درون اون مجددا کوئری میزنیم
و تعداد parent_user های با مقدار item حلقه(که همون id زیر مجموعه هاست) رو بدست میاریم و هر بار این تعداد با max مقایسه میشه اگر بزرگتر بود که جایگزین max میشه و id=item میشه در آخر مقدار متغیر id زیر مجموعه با بیشترین تعداد زیر مجموعه هست و به عنوان parent_user ثبت میشه . حالا شما میتئنید با این ایده گسترشش بدید
البته بصورت کلی گفتم قطعا دارای ایراداتی خواهد بود. و صد البته راه حل های بهتری هم وجود دارند