آژانس هواپیمایی
pop up

نمایش درختی زیر مجموعه ها

شروع موضوع توسط gavbandy ‏19 مارس 2006 در انجمن PHP

  1. gavbandy

    gavbandy Registered User

    تاریخ عضویت:
    ‏15 فوریه 2005
    نوشته ها:
    364
    تشکر شده:
    3
    سلام
    اول این ساختار کار منو گوش بدید تا بعد.
    یک بخش به اسم A داریم برای این بخش چند تا بخش دیگه میسازه و دوباره برای هر بخش چند بخش دیگه و...
    حالا من میخوام ببینم این زیر مجموعه ها را چظوری بشمارم یا به صورت درختی نمایش بدم.
    دقیقا مثل explore ویندوز میمونه.
    کسی راه حلی برای اینکار سراغ داره؟
     
  2. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    ببین برای هر کدوم یه field به نام parent تعریف کن و توش id شاخه اصلی شو بزن
    اوقت برای نمایش زیر مجموعه های یه قسمت:
    PHP:
    SELECT FROM data WHERE parent 1
     
  3. gavbandy

    gavbandy Registered User

    تاریخ عضویت:
    ‏15 فوریه 2005
    نوشته ها:
    364
    تشکر شده:
    3
    ببین سالار جون این ساختار هرمی شکل و معلوم نیست تا کجا پیش میره و در ضمن یکبار زیر مجموعه های A را میخوام و یکبار دیگه زیرمجموعه های B و ... اصلا هیچ چیزش معلوم نیست تنها چیزی که معلوم هستش اینه که هر بخش میتونه دو زیر مجموعه داشته باشه که هم میتونه وجود داشته باشه و هم میتونه وجود نداشته باشه.
     
  4. gavbandy

    gavbandy Registered User

    تاریخ عضویت:
    ‏15 فوریه 2005
    نوشته ها:
    364
    تشکر شده:
    3
    عکس زیر را ببین شاید بیشتر متوجه بشی
    دایره یعنی زیر مجموعه ای وجود نداره
     
  5. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    ببین راحته ها یکم فکر بیشتری بکن
    من یه برنامه از اینشرکت هرمی ها که پول می دن نوشتم همین رو توش اجرا کردم
    کاری نداره برای هر کس معرف بزار و شاخه رو برو باش بالا
     
  6. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    منم همین رو گذاشتم !!. .. ببین مگر زیر مجموعه شاخه اصلی آی دی نداره !!! خوب برای اونم میتونی زیر مجموعه بذاری و همینطور تا آخر
     
  7. boxilink
  8. shankimout

    shankimout Registered User

    تاریخ عضویت:
    ‏17 می 2004
    نوشته ها:
    1,491
    تشکر شده:
    3
    محل سکونت:
    ساری . . . . . . . . . . . . . . Permanently Bann
    یه sample بزار خیال همرو راحت کن دیگه !!! کشتی مارو تو با این همه نازو ادا :D

    منم دوست دارم الگوریتم ش رو بفهمم ولی نمی فهمم
     
  9. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    ببین الان اینجا یه تا آیتم داریم که به ترتیب زیر همن:
    کد:
    id	parent	name
    ----------------------
     1	NULL	first
     2	1	second
     3	2	third
    
    الان واسه اینکه زیر مجموعه های اولی رو نشون بدیم:
    PHP:
    SELECT FROM data WHERE parent 1
    که دومی رو بر میگردونه
    برای دومی هم همین حالت هست:
    PHP:
    SELECT FROM data WHERE parent 2
     
  10. gavbandy

    gavbandy Registered User

    تاریخ عضویت:
    ‏15 فوریه 2005
    نوشته ها:
    364
    تشکر شده:
    3
    سالار جون اصلا خودم یه روش توپ به ذهنم رسید که دیگه کارم شاید حل بشه اما این روش شما را متوجه نمیشم.
    یعنی توی شمارشش دچار مشکل میشم
     
  11. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    فکر کنم جواب منو ندیدی ! یه پست بالاتر از خودتو ببین
    در ضمن روش خودتم بگو
     
  12. gavbandy

    gavbandy Registered User

    تاریخ عضویت:
    ‏15 فوریه 2005
    نوشته ها:
    364
    تشکر شده:
    3
    خوب این چیزی که تو میگی فقط برای دوتا از زیر مجموعه ها میره میگرده مسئله اینه که چطوری اینو توی یک حلقه قرار بدیم و بره و زیر مجموعه های زیر مجموعه ها را هم بشماره
     
  13. shankimout

    shankimout Registered User

    تاریخ عضویت:
    ‏17 می 2004
    نوشته ها:
    1,491
    تشکر شده:
    3
    محل سکونت:
    ساری . . . . . . . . . . . . . . Permanently Bann
    حالا همه اینا که گفتی رو چجور توی یه لوپ قرار بدیم که تا اخرین زیر مجموعه رو هم نشون بده .
     
  14. avajang.com .leftavajang.com.right
  15. gavbandy

    gavbandy Registered User

    تاریخ عضویت:
    ‏15 فوریه 2005
    نوشته ها:
    364
    تشکر شده:
    3
    شکل را ببین
    http://www.forum.persiantools.com/attachment.php?attachmentid=6831&d=1142838231
    اگه زیر مجومه های Aرا بخواهیم اول میاییم و اونجایی که parent=A را پیدا میکنیم حالا چطوری من این حلقه را تکرار کنم و مثلا H را پیدا کنم؟
    و در مجموع بتونم زیر مجموعه های A را بشمارم؟
     
  16. Parham

    Parham Registered User

    تاریخ عضویت:
    ‏24 سپتامبر 2003
    نوشته ها:
    1,039
    تشکر شده:
    1
    الگوریتم کار یک چیزی تو این مایه ها میشه: (این یک زبان جدیده برای الگوریتم نویسی!:lol: )
    PHP:
    RootID 0
    DrawMenu 
    (0,0)

    DrawMenu(ParentID,Level){
        print 
    level ParentID
        ChildS
    ()=GetChilds(ParentID)
        
    level +=1
        
    for each Child in ChildS
            DrawMenu
    (Child.ID,level)
        
    next
    }
    شما یک ریشه داری برای منوت که آی دیش مشخصه. یک روال هم درست میکنیم (DrawMenu) که اون میاد منو رو نشوند میده. اول با آی دی ریشه شروع میکنیم و لول ۰بعد تو همون روال میایم اون ریشه رو نشون میدیم . بعدبچه های اون ریشه رو پیدا میکنیم و به ازای تعداد بچه ها! مجدد همون روال رو داخل خودش ولی با ای دی بچه ها به ترتیب و با یک لول بالاتر صدا میزنیم. این میشه یک حلقه تو در تو! اگر بچه ای باشه این حلقه تو خودش اونقدر میچرخه تا همه زیر مجموعه ها رو پیدا کنه و رسم کنه. هیچ محدودیتی هم در تعداد زیرشاخه ها وجود نداره. امیدوارم گیج نشده باشید.:wacko:
     
  17. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    گیج نشدم ولی این چه زبونیه؟
     
  18. Parham

    Parham Registered User

    تاریخ عضویت:
    ‏24 سپتامبر 2003
    نوشته ها:
    1,039
    تشکر شده:
    1
    شما هم جدی گرفتی سالار جان؟! گفتم که یک زبون جدیده! یک ترکیبی از php و VB و ... . بابا هرچی به ذهنم اومد همونجوری نوشتم که فقط الگوریتم کار دستتون بیاد.
     
  19. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    نه بابا! یه چیزی حالیته!! جالب بود ! ولی همین با php نوشته میشه
     
  20. gavbandy

    gavbandy Registered User

    تاریخ عضویت:
    ‏15 فوریه 2005
    نوشته ها:
    364
    تشکر شده:
    3
    سالار جون بزار من این کار را تحویل بدم بعدش میام توضیح میدم.
     
  21. gavbandy

    gavbandy Registered User

    تاریخ عضویت:
    ‏15 فوریه 2005
    نوشته ها:
    364
    تشکر شده:
    3
    سلام
    آقا این سیستم من جواب نداد .
    کسی راهی به نظرش نمیرسه.
    تو رو خدا یکی کمک کنه .
    من نمیدونم دیگه چیکار کنم.
    راه حلی که من نوشته بودم این جوری بود که برای هر یوزر یه مجموعه از زیر مجموعه هاش تشکیل میدادم و بهش یه شماره ی بخصوص میدادم.
    بعد داخل صفحه ی نمایشم هم یک سری span با شماره های معین ایجاد کرده بودم که موقع ترسیم درخت با جاوا داخل این span ها اون چیزی که میخواستم را نشون میدادم .
    حالا مشکل من پیدا کردن این شماره برای بقیه ی یوزر ها هستش .
    نمیدونم کسی چیزی فهمید یا نه؟
    مثلا span با id=6 وقتی پر میشد که توی زیر مجموعه های طرف یه فردی با span=6 وجود داشت.
    وقتی مثلا یوزر شماره 2 یه نفر را سمت چپش عضو میکنه ( برای خودش شماره ی span اش مساوی 2 میشه ) این عضو جدید باید برای یوزر بالای شماره ی 2 هم اضافه بشه و یه شماره ی span بگیره که قاعدتا باید بشه 2*2=4 یعنی شماره ی span برابر 4 برای یوزر شماره 1 میگیره.
    حالا کسی میتونی کمک کنه تا این شماره ی span ها را من پیدا کنم؟
    مثلا این را شما با یک حلقه یا هر چیز دینامیک دیگه ایجاد کنید:
    فرد با شماره ی span=9 برای یوزر شماره ی 1 یک نفر را سمت چپش عضو کرده و اون یه نفر یه نفر دیگه را سمت چپش عضو کرده.
    حالا شماره ی این فرد برای یوزر با شماره ی 2 را پیدا کنید؟
    فکر نکنم کسی متوجه شده باشه من چی میگم
    اما اگه راه حل دیگه ای هم برای این مسئله دارید بگید.
     
  22. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    این هم کمک یکم بیشتر فکر کن
    فرض من یوزرم a هست و تو زیر گروه منی و اسمت b هست
    در دیتابیس باید جلو یوزرت یه فیلد دیگه باشه که توش سر گروه رو بنویسه یعنی a که برنامه بتونه با داشتن هر یوزر بالا سری اش رو بدونه و بالا رو که بدونه بالای اون یکی رو هم می دونه تا جایی که خالی باشه یعنی بالایی نیست

    گرفتی؟