PDA

View Full Version : اصول طراحی برنامه فرم ساز



sogoli321
شنبه 22 دی 1386, 16:10 عصر
باسلام
و خسته نباشید خدمت دوستان
عارضم که بنده قصد دارم یک برنامه ایی بنویسم که هدف ان تولید فرم هست .بدین مفهوم که صرفا یک صفحه ایی باشد که انواع فرمتهای فیلدها رو داشته باشه و کاربر بتونه برای خود یک فرم با انواع مختلف فیلدها بسازه.وصرفا محدود به همین موضوع باشد.البته الزامی نیست که حتما با php باشد با هر پلتفرم یا زبان دیگری هم باشه موردی نداره.فقط از دوستان تقاضا دارم که اگر قبلا چنین کاری کردند بنده را راهنکایی کنند.
باسپاس

zfarhad2000
شنبه 22 دی 1386, 21:41 عصر
این کاری که شما می‌خواین انجام بدین درسته یک مقدار تلاش لازم داره ولی کار خیلی خیلی سختی نیست. شما اول بگید در کدوم مرحله هستین و روی چه چیزی دارین فکر می‌کنین یا کار می‌کنین و الان دقیقا چه مشکلی دارین؟

sogoli321
یک شنبه 23 دی 1386, 09:04 صبح
با سپاس از راهنمای شما
فقط یه توضیح ... من در وراقع یه برنامه ایی می خواستم بنویسم که بصورت ویژوال بشه با ان صرفا یک تیبل را در دیتابیس ساخت .بدین شکل که کاربر با انتخاب فیلدهای مختلف بتونه برای خود یک تیبل بسازه

musiox
یک شنبه 23 دی 1386, 10:39 صبح
دو تا سوال :
1 . فرم یا جدول ؟
2 .اگه جدول, چه پایگاه داده ای ؟

اگه بحث شما جدول باشه, در واقع باید گفت که یه مدیریت پایگاه داده می خوای بنویسی !

zamanphp
یک شنبه 23 دی 1386, 11:34 صبح
یه سر به برنامه phpmyadmin بزن
دقیقا همنون چیزی که می خوای داره

zfarhad2000
یک شنبه 23 دی 1386, 13:30 عصر
من فکر کنم تقریبا متوجه شدم که شما می‌خوای چیکار کنید:

یک فرم ساز می‌خواید داشته باشید که کاربر به وسیله اون بتونه انواع فرمها رو طراحی کنه و در فرمهای خودش از انواع مختلف input های HTML استفاده کنه و بعد این فرم رو روی سایت در حالت نمایش همه قرار بده تا بقیه بتونن فرم رو پر کنن و اطلاعات پرشده اون فرم توسط سازنده فرم قابل مشاهده باشه. یک فرم ساز دینامیک با قابلیت انعطاف.

قبلا من همچین چیزی رو روی مامبو دیده بودم و یه مقداری هم باهاش کار کرده بودم که البته اون فرم‌ساز مامبو یک چندتا ضعف کوچیک داشت که فکر کنم اگه الان نسخه جدید ازش منتشر شده باشه اون ضعفها رو رفع کردن. توصیه می‌کنم اگه می‌تونی حتما روی مامبو دنبال این فرمساز بگرد ایده‌های خوبی می‌تونه بهت بده و چون OpenSource هست کدهاش رو هم می‌تونی مطالعه کنی.

ولی در کل اینجور فرمسازها نیاز به یک طراحی دیتابیس منظم و کامل دارن که بدون مشکل کار کنن. شما می‌تونید به نظر من دو نوع طراحی دیتابیس براش داشته باشین:
1- طراحی با چند جدول محدود. به این صورت که تمامی فرمهایی که ساخته می‌شن در همین چندتا جدول محدود ذخیره بشن. یعنی حتی اطلاعات پرشده فرمها هم در همین جدولها ذخیره بشن.
2- طراحی به صورت ایجاد جدول برای هر فرم. به این صورت که با ایجاد هر فرم جدید توسط کاربر یک جدول در دیتابیس متاسب با اون ایجاد بشه و اطلاعات پرشدن فرمها هم توی این جدول ذخیره بشه. این کاری بود که توی همون کامپوننت مامبو هم انجام شده بود.

این دو روش نسبت به هم مزیتهایی می‌تونن داشته باشن. مزیت دومین روش اینه که کدنویسی و طراحی این فرمساز رو ساده‌تر میکنه. دیگه نیازی نیست به ارتباطات پیچیده دیتابیسی زیاد فکر کنید. مزیت روش اول هم اینه که همه اطلاعات فرمها به صورت مجتمع توی فقط چندتا جدول ذخیره میشه و بدون دلیل جدولهای اضافی ایجاد نمیشه.

sogoli321
یک شنبه 23 دی 1386, 15:15 عصر
دو تا سوال :
1 . فرم یا جدول ؟
2 .اگه جدول, چه پایگاه داده ای ؟

اگه بحث شما جدول باشه, در واقع باید گفت که یه مدیریت پایگاه داده می خوای بنویسی !
درواقع می خوام یک برنامه ایی بنویسم که با محیط ویژوال ان بتوان یک جدول در دیتابیس(ms sql or mysql) ساخت.لازم به ذکراست که کاربر بتواند با انتخاب فیلدهای محتلف(مثلا کاربر بتواند فیلد text یا combo انتخاب کند)جدول را بسازد.



من فکر کنم تقریبا متوجه شدم که شما می‌خوای چیکار کنید:

یک فرم ساز می‌خواید داشته باشید که کاربر به وسیله اون بتونه انواع فرمها رو طراحی کنه و در فرمهای خودش از انواع مختلف input های HTML استفاده کنه و بعد این فرم رو روی سایت در حالت نمایش همه قرار بده تا بقیه بتونن فرم رو پر کنن و اطلاعات پرشده اون فرم توسط سازنده فرم قابل مشاهده باشه. یک فرم ساز دینامیک با قابلیت انعطاف.

قبلا من همچین چیزی رو روی مامبو دیده بودم و یه مقداری هم باهاش کار کرده بودم که البته اون فرم‌ساز مامبو یک چندتا ضعف کوچیک داشت که فکر کنم اگه الان نسخه جدید ازش منتشر شده باشه اون ضعفها رو رفع کردن. توصیه می‌کنم اگه می‌تونی حتما روی مامبو دنبال این فرمساز بگرد ایده‌های خوبی می‌تونه بهت بده و چون OpenSource هست کدهاش رو هم می‌تونی مطالعه کنی.

ولی در کل اینجور فرمسازها نیاز به یک طراحی دیتابیس منظم و کامل دارن که بدون مشکل کار کنن. شما می‌تونید به نظر من دو نوع طراحی دیتابیس براش داشته باشین:
1- طراحی با چند جدول محدود. به این صورت که تمامی فرمهایی که ساخته می‌شن در همین چندتا جدول محدود ذخیره بشن. یعنی حتی اطلاعات پرشده فرمها هم در همین جدولها ذخیره بشن.
2- طراحی به صورت ایجاد جدول برای هر فرم. به این صورت که با ایجاد هر فرم جدید توسط کاربر یک جدول در دیتابیس متاسب با اون ایجاد بشه و اطلاعات پرشدن فرمها هم توی این جدول ذخیره بشه. این کاری بود که توی همون کامپوننت مامبو هم انجام شده بود.

این دو روش نسبت به هم مزیتهایی می‌تونن داشته باشن. مزیت دومین روش اینه که کدنویسی و طراحی این فرمساز رو ساده‌تر میکنه. دیگه نیازی نیست به ارتباطات پیچیده دیتابیسی زیاد فکر کنید. مزیت روش اول هم اینه که همه اطلاعات فرمها به صورت مجتمع توی فقط چندتا جدول ذخیره میشه و بدون دلیل جدولهای اضافی ایجاد نمیشه.

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

musiox
یک شنبه 23 دی 1386, 15:59 عصر
خب با این توضیحات می شه یه چیزایی گفت .
به نظر من :
اول باید یه جدول داشته باشی که توش مشخصات فرما رو توش داشته باشی مثلا : شناسه فرم و جدول مربوط به اون فرم و ...
یه جدول هم اجزای فرم ها که هر فرمی چه اجزایی داره و با چه مشخصاتی و ...
یا می تونی که از روشهای دیگه استفاده کنی مثلا اینکه تنظیمات رو توی فایل قرار بدی .
بدیهیه که این تنظیمات رو موقع ایجاد فرم باید توسط برنامه ای که نوشتی توی دیتا بیس یا فایل ذخیره کنی و کاربری که با این برنامه کار می کنه این تنظیمات رو انجام داده .
نمایش فرم به اون روشی که استفاده می کنی بستگی داره . اگه بخوای از روش های داینامیک استفاده کنی باید یه برنامه داشته باشی که تنظیمات رو بخونه و فرمو نشون بده .
برای ورود اطلاعات هم باید یه برنامه داشته باشی با توجه به شناسه فرم , ورودی های مورد انتظار صفحه رو ( بر اساس اجزای فرم ) بگیره و توی فیلد مورد نظر ( که توی تنظیمات مشخص شده ) توی جدول مورد نظر ( که توی تنظیمات فرم مشخص شده ) قرار بده .
امیدوارم که این توضیحات روشن باشه . اگه ایرادی هم داره شرمنده همه .

zfarhad2000
یک شنبه 23 دی 1386, 16:31 عصر
این موردی رو که شما گفتی کامپوننتی بنام فیسیل فرم در مامبو هست که متاسفانه فقط در محیط مامبو قابل اجراست .در ضمن بنده هم دنبال راه دوم هستمو فکر می کنم دومین راه منطقی تر باشه ولی کامپوننت فیسیل فرم بصورت اول کار می کنه نه دوم....

خوب دقیقا اسم اون کامپوننت رو به خاطر ندارم ولی صددرصد مطمئن هستم که از روش دوم یعنی ایجاد جدول برای ساخت فرم استفاده می‌کرد. شاید اون کامپوننتی که شما دیدید و باهاش کار کردین با اونی که من دارم می‌گم متفاوت باشه.

در ضمن اصلا نمی‌شه گفت که روش دوم بهتر است یا اول. این مورد در حالتی قابل بحث هست که پروژه شما کاملا تعریف بشه و نوع فرمها، تعداد فرمها و تعداد حداکثر رکورد هر فرم مشخص باشه. اون موقع میشه گفت که کدوم روش بهینه‌تر هست. اگه هم پروژه تون زیاد بزرگ نیست و کاربرهای زیادی نخواهد داشت خیلی فرق نمی‌کنه که کدوم روش رو استفاده کنید.

sogoli321
یک شنبه 23 دی 1386, 17:14 عصر
خب با این توضیحات می شه یه چیزایی گفت .
به نظر من :
اول باید یه جدول داشته باشی که توش مشخصات فرما رو توش داشته باشی مثلا : شناسه فرم و جدول مربوط به اون فرم و ...
یه جدول هم اجزای فرم ها که هر فرمی چه اجزایی داره و با چه مشخصاتی و ...
یا می تونی که از روشهای دیگه استفاده کنی مثلا اینکه تنظیمات رو توی فایل قرار بدی .
بدیهیه که این تنظیمات رو موقع ایجاد فرم باید توسط برنامه ای که نوشتی توی دیتا بیس یا فایل ذخیره کنی و کاربری که با این برنامه کار می کنه این تنظیمات رو انجام داده .
نمایش فرم به اون روشی که استفاده می کنی بستگی داره . اگه بخوای از روش های داینامیک استفاده کنی باید یه برنامه داشته باشی که تنظیمات رو بخونه و فرمو نشون بده .
برای ورود اطلاعات هم باید یه برنامه داشته باشی با توجه به شناسه فرم , ورودی های مورد انتظار صفحه رو ( بر اساس اجزای فرم ) بگیره و توی فیلد مورد نظر ( که توی تنظیمات مشخص شده ) توی جدول مورد نظر ( که توی تنظیمات فرم مشخص شده ) قرار بده .
امیدوارم که این توضیحات روشن باشه . اگه ایرادی هم داره شرمنده همه .

ممنون از راهنمایی شما
من فقط نیاز به قسمت اول که همانا برنامه ایی که فقط بشه باهاش با انتخاب فیلدهای مختلف و تعریف یک نام برای ان ،جدول در دیتابیس را ساخت ... درواقع همان اتفاقی که در محیط ویژوال sql رخ میده ،همون رو در برنامه خود بتوانم پیاده سازی کنم.



خوب دقیقا اسم اون کامپوننت رو به خاطر ندارم ولی صددرصد مطمئن هستم که از روش دوم یعنی ایجاد جدول برای ساخت فرم استفاده می‌کرد. شاید اون کامپوننتی که شما دیدید و باهاش کار کردین با اونی که من دارم می‌گم متفاوت باشه.

در ضمن اصلا نمی‌شه گفت که روش دوم بهتر است یا اول. این مورد در حالتی قابل بحث هست که پروژه شما کاملا تعریف بشه و نوع فرمها، تعداد فرمها و تعداد حداکثر رکورد هر فرم مشخص باشه. اون موقع میشه گفت که کدوم روش بهینه‌تر هست. اگه هم پروژه تون زیاد بزرگ نیست و کاربرهای زیادی نخواهد داشت خیلی فرق نمی‌کنه که کدوم روش رو استفاده کنید.

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

musiox
یک شنبه 23 دی 1386, 17:41 عصر
من ساختار کل برنامرو تا اونجایی که به ذهنم می رسید گفتم . دیگه چی باید بگم ؟ اگه فقط می خوای فرم درست کنی , خب فقط بخش فرم درست کردن رو درست کن . شما اول باید خودت یه ایده ای بدی , یه کاری بکنی , یه دو سه تا صفحه درست کنی بذاری تا اونایی که می تونن و علاقه دارن کمک کنن .
من از این سر در نیاوردم . شما چی رو می گی ؟

محیط ویژوال sql