سلام دوستان گلم من یه فرم دارم به این شکل:

1.png

بنده سه تا جدول درست کردم یکیش title دومی fields و سومی هم اگر فیلدها سلکت باکس بودن گزینه هاش رو اونجا بزارم fields_values
عکسی که برای شما گزاشتم فقط یکی از تب های موجود تو فرم هستش و کلا 7 تا تب داره! من اومدم تو جدول این هفتا تب رو به این صورت ذخیره کردم:

2.png

بعضی از فیلد ها دسته جمعی قرار گرفتن و پایینش هم زده add another + برای این قسمت ها یک اسم گزاشتم و تو جدول title قرار دادم و parent رو آی دی title اصلی گزاشتم به این خاطر که هنگام طراحی فرم و کد نویسی مشخص کنم اگر فیلدهای دریافتی مربوط به پرنت 0 نبودن مثلا border داشته باشن و زیرشون گزینه ی add another + داشته باشه!

3.png

و فیلد ها رو هم به این صورت ذخیره کردم:

4.png

تا اینجا همه چی اوکیه... برنامه بیشتر به صورت فانکشنال نوشته شده..اولین فانکشن مربوط به دیریافت title هاست به اسم:
fn_get_account_profile_titles ($parent = 0)

اول تایتل هایی که پرنت 0 دارن و در ادامه ی foreach آرگومان parent رو برابر با آی دی تایتل اصلی کردم که پرنت هاش رو هم نشون بده.. تا اینجای کار همه چیز اوکیه. مشکل اصلی من نشون دادن فیلد هاست.. من برای دریافت فیلدها فانکشن :
fn_get_account_profile_fields ($title_id)
نوشتم که تایتل آی دی رو میگیره و نمایش میده یه چیز دیگه ام بگم اینه که ترتیب title ها و fields ها رو با position مشخص کردم و موقع کوئری زدن order by position ASC رو نوشتم! حالا اینجا اگر من با این فانکشن فیلد هارو بگیرم چجوری میشه؟ یعنی اول باید فیلد های تایتل اصلی رو بگیرم بعد دوباره فیلد های هرکدوم از پرنت ها؟؟ درصورتی که من نمیخوام به این صورت باشه چون اگر به تصیر فرم و یا تصویری که از filelds ها گزاشتم نگاه کنید فیلد هایی که مربوط به تایتل اصلی هستن یدونه اول قرار میگیره دومی مثلا بعد از پرنت 9 سومی بعد از پرنت 11! ولی وقتی من میخوام فیلدهارو دریافت کنم همشون به ترتیب میان مثلا تایتل اصلی همشون رو میگیره و اول اونارو نشون میده. بعد به ترتیب پرنت هارو..
ببخشید اگر نتونستم سوالم رو واضح و رسا بیان کنم..پیشاپیش ممنونم از جوابتون.....