• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
پیاده سازی Custom Fields
#1
سلام

شما از چه روشی برای پیاده سازی CustomFields استفاده می کنید ؟

خصوصا برای فرم ثبت نام .
Facebook
EMail: Mohsen [@] EDadkhah [.] ir
  پاسخ
تشکر شده توسط :
#2
علیک سلام .. بیشتر توضیح میدی ؟
  پاسخ
تشکر شده توسط :
#3
فرض کنید الآن یه فرم ثبت نام داریم که کاربر میاد از اونجا توی سیستم ثبت نام میکنه .
حالا مدیر می خواد یه فیلد رو از کنترل پنل بدون ایجاد تغییر توی کد ها به فرم ثبت نام اضافه کنه .
من یه روشی رو خودم بلدم ولی زیاد به نظرم اصولی نیست . دوست دارم بدونم بقیه چطوری اینکارو انجام میدن
Facebook
EMail: Mohsen [@] EDadkhah [.] ir
  پاسخ
تشکر شده توسط :
#4
من تا حالا همچین کاری نکردم، ولی فکر کنم اصولی ترین راه این باشه یه جدول فلگ برای اینکار تو دیتابیس بزاریم...
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : mohsened
#5
من یه روش استفاده میکنم،میگم شاید به کارتون بیاد،قبلش بابت زیاده گویی عذر میخوام.

من یه پروژه داشتم که مدیریت باید فیلدهایی رو اضافه میکرد،ولی تعدادشون مشخص نبود،بیس کار رو با جی کوئری طراحی کردم،طوری که بتونه فیلد بذاره(input-آی دی و اسم افزایشی) ،بعد از ارسال فرم کوئریهای با اسم input1 تا سقفش که 10 بود رو با حلقه چک میکردم که اگر ست شده کلا ریخته بشه توی یه آرایه.
دست آخر ارایه رو سریال میکردم و میریختم توی یه فیلد از دیتابیس.

شما میتونید این روش رو برای پیاده سازی فیلدهای مختلف طراحی کنید ،در اون صورت باید ارایتون رو هم گسترش بدید.
فرضا:
کد پی‌اچ‌پی:
array(
    
"text" => array(

            
"key=value",
            
"key2=value2"
            
            
),
    
"textarea" => array(

            
"key=value",
            
"key2=value2"
            
            
)

و یا :
کد پی‌اچ‌پی:
array(
    
"text" => array(
                    
=> array(
                        
"name"   => "somename",
                        
"id"      => "someid"
                    
),
                    
=> array(
                         
"name"  => "somename2",
                         
"value" => "someValue"
                    
)
                )
            
    
"textarea" => array(
                    
=> array(
                        
"name"   => "somename",
                        
"id"      => "someid"
                    
),
                    
=> array(
                         
"name"  => "somename2",
                         
"value" => "someValue"
                    
)
            )
            
    ) 
خب،شما از این روش میتونید استفاده کنید و برای هر یوزر یه فیلد اضافی بذارید(متا دیتا) و فیلد تمپلیت رو(اونایی که باید برای کاربر نمایش داده شه)رو هم تو قسمت تنظیمات سایت و به صورت ارایه و سریال شده نگه دارید،موقع ثبت نام اینو آنسریالایز کنید و اگر ست شده بود،فیلدها رو براش نمایش بدید تا پر شه،هنگام سابمیت هم ،این قسمتهای اضافی سریالایز و تو همون قسمت مازاد جدول یوزر و یا هرچیز دیگه قرار بگیره.

روش خودتونم بگید بدونیم.

این دوستمون اینم توضیح بدن:
(۱۳۹۱ اردیبهشت ۱۹, ۱۰:۳۸ ب.ظ)hamid_80386 نوشته: من تا حالا همچین کاری نکردم، ولی فکر کنم اصولی ترین راه این باشه یه جدول فلگ برای اینکار تو دیتابیس بزاریم...

سپاس.

اللهم صل علی محمد و آل محمد و عجل فرجهم

افلاطون را گفتند چرا هرگز غمگین نمیشوی؟
گفت :دل برآنچه نمی ماند،نمی بندم.
  پاسخ
تشکر شده توسط : hidensoft mohsened
#6
منم این کارو انجام نمی دم اما خب یه راه ساده به نظرم می رسه اونم اینکه مثلن یه قسمت باشه برای ایجاد فیلد جدید با یه اینپوت و یه سلکت برای انتخاب نوعش. بعد که فرم ارسال شد به یه همچین کوِعری فیلد رو اضافه می کنیم.

کد پی‌اچ‌پی:
$fieldname "C_".$_POST['MyInput'];
$sql "ALTER TABLE $table ADD $fieldname $type"

بعد موقع نمایش فرمی که می خواید با یه کوعری لیست فیلد های جدول رو میگیریم.

کد پی‌اچ‌پی:
$sql "SHOW COLUMNS FROM $table
حالا با یه لوپ ساده می تونید فیلد هایی که مدیر دستی اضافه کرده رو شناسایی کنید.
  پاسخ
تشکر شده توسط : mohsened Goback
#7
ممنون از همه دوستان .
hidensfot عزیز ، با این روش توی خود جدول اصلی تغییر ایجاد میشه. فکر کنم این روش زیاد اصولی نباشه .
امید جان پست شما رو مطالعه کردم دقیق متوجه نشدم که منظورتون چیه .
حمید جان شما هم بیشتر توضیح بدید ممنون میشم .

این چیزیه که دوباره به ذهن خودم رسید .

دو تا تیبل ایجاد کنیم :
1- نگهداری فیلد های اضافی و تنظیمات مربوط به معتبر سازی اونها
2- نگهداری مقدار هر فیلد برای هر کاربر

تیبل اول که ساده هست و بسته به نیاز ایجاد میشه :
1- id
2- name
3- type
4- ...
ولی تیبل دوم شامل فیلد های زیر هست :
1- id
2- field_id : این هم که معلومه آیدی فیلد توی جدول قبل هست .
3- user_id : آیدی کاربر
4- value: مقدار فیلد

حالا خیلی راحت میشه هم فیلد هارو توی فرم ثبت نام نشون داد هم خیلی راحت اونها رو برای هر کاربر ذخیره و نمایش داد .
نظرتون چیه ؟
Facebook
EMail: Mohsen [@] EDadkhah [.] ir
  پاسخ
تشکر شده توسط :
#8
شما باید از روش eav برای پیاده سازی جداول بهره بگیرید.
کد:
http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
  پاسخ
تشکر شده توسط : mohsened
#9
نمی دونم شاید عملی نباشه این ساده ترین راهی بود که به زهنم رسید. روشی که صالح گفته رو دنبال کنید باشد که رستگار شوید :دی
  پاسخ
تشکر شده توسط : mohsened
#10
(۱۳۹۱ اردیبهشت ۲۱, ۰۴:۰۶ ق.ظ)zoghal نوشته: شما باید از روش eav برای پیاده سازی جداول بهره بگیرید.
کد:
http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model

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

اللهم صل علی محمد و آل محمد و عجل فرجهم

افلاطون را گفتند چرا هرگز غمگین نمیشوی؟
گفت :دل برآنچه نمی ماند،نمی بندم.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان