رفتن به مطلب

سوال از نحوه نمایش مقادیر آرایه در Select Box و دریافت محتوای انتخاب شده جهت انتقال به دیتابیس درregister.php


نورنما

ارسال‌های توصیه شده

باسلام خدمت مدیریت واساتید محترم و اعضای انجمن  وعرض تبریک سال نو

 

من در register.php  تعدادی سلکت باکس دارم که کاربر فقط یک عنوانش رو میتونه انتخاب کنه

تا موقع ثبت نام اون گزینه در دیتابیس مشخصات کاربری ثبت بشه

در این مورد مشکلی ندارم چراکه مقادیر ثابت ها یا متغییر های موجود در php رو به دستور سلکت باکس

مثل نمونه زیر میدهم و باانتخاب کاربر مقدار انتخاب شده به دیتابیس منتقل میشود

$form->add( new \IPS\Helpers\Form\Select( 'mem', null, TRUE, array( 'options'=> array($mem=>$mem,'19'=>'19','21'=>'21','22'=>'22','24'=>'24'),'multiple'=> FALSE ) ) );	


با دستور زیر هم مقدارانتخابی به دیتابیس منتقل میشه 
$member->mem	   = $values['mem'];

 

اما مشکل اینجاست که  ولی برخی سلکت باکس ها دارم که  در انها باید محتویات  یک آرایه  که  مقادیرش را از دیتابیسی بصورت روزانه قبلا گرفته وذخیره کرده ام  ، نمایش داده بشود

و مقدار انتخاب شده از آن توسط کاربر در متغیری ذخیره شود وبه دیتابیس مشخصات کاربری منتقل شود که نمی شود وبرنامه خطا میدهد .

نمایش محتویات آرایه مثل نمونه زیر در سلکت باکس میسر است ولی روش قرار دادن مقدار انتخاب شده توسط کاربر را نتونستم متوجه شوم ، لطفا راهنمایی نمایید

باتشکر

این فقط مقادیر درون آرایه را نمایش میدهد!!
مقدار انتخاب کرده کاربر رو نتونستم داخل متغییری بریزم
$form->add( new \IPS\Helpers\Form\Select( 'mem', null, TRUE, array( 'options'=> $araye_saaathe,'multiple'=> FALSE ) ) );

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده

درود.

خب شما باید یک Query بزنید و مقادیر را بگیرید و در نتیجه درون Select باکس اطلاع ذخیره شده را باید درون Select Box قرار دهید.

یعنی همان مقدار ذخیره شده در جدول کاربران.

$member->mem

پس اول کد زیر اجرا و مقدار ذخیره شده را می گیریم:

$member = \IPS\Member::loggedIn();

try
{
    $user_mem_value = \IPS\Db::i()->select( 'mem', 'core_members', array( 'member_id=?', $member->member_id ) )->first();
}
catch( \UnderflowException $e )
{
    $user_mem_value = ''
}

سپس مقدار را در Select Box مورد نظر جای می دهیم با کلیه Option هایی که از قبل داشته است و یا بدون آنها، حتی شما می توانید به صورت فیلد Text مقدار ذخیره شده را نمایش دهید، فقط در نظر داشته باشید که "Default Value" را باید مقدار ذخیره شده بدهیم، مانند کد زیر:

$form->add( new \IPS\Helpers\Form\Select( 'mem', $user_mem_value ? $user_mem_value : null, TRUE, array( 'options'=> $araye_saaathe,'multiple'=> FALSE ) ) );

*نکتهبررسی کنید شاید متغیر زیر:

$member->mem

مقدار را مستقیم از جدول اطلاعات بیاد و نیاز نباشد که Select Mysql Query زده شود.

 

لینک زیر را هم بررسی کنید کمک خواهد کرد:

https://invisioncommunity.com/developers/docs/other-features/forms/overview-of-the-ips4-form-helpers-r57

 

موفق باشید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

باسلام دوباره

خیلی ممنونم از راهنمایتان 

با راهنمایی شما بخش زیادی از مشکلم حل شده 

فقط با این کد زیر شماره عددی ردیفی که از select box انتخاب شده در دیتابیس ذخیره میشود 

من میخوام محتوای متنی آرایه     $araye_saaathe را با استفاده از  همین عدد فراخوانی و در داخل دیتابیسم  ذخیره کنم ، اینو چطور تنظیم کنم؟ 

$form->add( new \IPS\Helpers\Form\Select( 'mem', $user_mem_value ? $user_mem_value : null, TRUE, array( 'options'=> $araye_saaathe,'multiple'=> FALSE ) ) );

 

_______

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

	$member->mem = $values['mem'] ;

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده

درود.

خواهش، خوشحالم که توانستم کمک کنم.

خب شما بهتر اینه که کلید و مقدار (Key and Value) را در آرایه خود هم مقدار کنید، مثال:
 

array('meghdare1' => 'meghdare1', 'meghdare2' => 'meghdare2');

موفق باشید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیلی ممنون درست شد وجواب داد

فقط با تغییر نوع مقدار دهی آرایه به کلید و مقدار که فرمودید  به یک مشکل جدید برخوردم 

آنهم حذف اعضای تکراری آرایه که بعداز مقدار دهی از این دستور استفاده کرده ام وبعدش در سلکت باکس نمایش میدهم 

الان این دستور دیگه کل مقادیر غیر تکراری آرایه رو نمایش نمیده  ،بلکه همه مقادیر رو بجز یک مقدار حذف وفقط یک مقدار از آرایه رو به همراه شماره گذاری نمایش میده !

$araye_saaathe =array_unique ( $araye_saaathe );

در مورد دستور جایگزین برای حذف مقادیر تکراری این نوع آرایه راهنمایی می فرمایید؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده

درود.

ببینین شما 2 تا راه حل داری:

1) مقدار و کلید یکسان، و دستوری که استفاده کردین برای Unique کردن که بقیه تکراری هستن اگر یکی میمونه!

2) مثل روش اول که استفاده کردید مثلا:

'19'=>'Meghdar','21'=>'Meghdar'

اگر از روش 2 استفاده کنین، می تونین مقادیر یکسان هم استفاده کنین ولی خب اگر یادتون باشه، شما مشکل داشتید که کلید داره ذخیره میشه درسته؟ خب برای این هم راه حلی وجود داره به اسم Switch Case در PHP
که مقدار Default سلکت باکس رو با عددش تعیین می تونین کنید.

راه حل دیگه ای به ذهنم نمیرسه.

 

موفق باشید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیلی ممنونم از راهنماییتون 

تونستم با راهنمایی شما اول مقادیر ارایه رو بصورت معمولی که key ,value غیر از هم  هستندازدیتابیس دریافت ، در آرایه ذخیره کنم بعد از حذف مقادیر مشابه توسط دستور array_unique ، توسط روشی که فرمودید مثل مثال زیر مقادیر آرایه رو در آرایه دومی بریزم وآن ارایه دوم رو در سلکت باکس استفاده کنم وبه دیتابیس منتقل کنم .?

array('meghdare1' => 'meghdare1', 'meghdare2' => 'meghdare2');

_____
for ($i = 0; $i < count($araye_1)+1; $i++) { 
array_push($araye_2,array(($araye_1[$i]) => $araye_1[$i])); 
  }
  

__________

 یک مشکل خیلی جزئی دراین مورد مانده آنهم اینکه در سلکت باکس همراه value ومقدار آرایه ، یک عدد  مثل تصویر نمایش داده میشود و بجز گزینه اول ،الباقی با شماره آرایه به مقدارش افزوده میشودونمایش داده میشوند 

این عدد رو  چطور میشود حذفش کرد؟

xxxxxxx.png.b36f1f93a2c4ff5f21653b004cac974a.png

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده

درود.

با استفاده از کد زیر:

var_dump($moteghayere_shoma);
die();

یا

print_r($moteghayere_shoma);
die();

در فایل مورد نظر می تونید آرایه دوم رو ببینید چی خروجیش هست و مطمئنا مشکل رو متوجه خواهید شد.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنونم از پاسختان 

ولی راستش اشکال کار رو نمی تونم متوجه بشوم

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

این شکلی هست 

البته اینم عرض کنم که اعداد Disable  هستند و تنها بر روی مقادیر امکان کلیک هست ونه اعداد .

array(3) { [0]=> array(1) { ["حضوری"]=> string(10) "حضوری" } 
	   [1]=> array(1) { ["غیر حضوری"]=> string(17) "غیر حضوری" } 
           [2]=> array(1) { ["نیمه حضوری"]=> string(19) "نیمه حضوری" } }

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • تیم مدیریت/توسعه دهنده

درود.

مشکل مشخصه که!

کل مقادیر شما باید در یک آرایه باشه! نتیجه رو شما ببینید؟

3 تا آرایه شده که درون هر کدام یک آرایه هست که یک مقدار داره.:-?

باید یک همچین چیزی باشه نتیجه شما باشه:

array(1) {
["حضوری"]=> string(10) "حضوری",
["غیر حضوری"]=> string(17) "غیر حضوری"
["نیمه حضوری"]=> string(19) "نیمه حضوری"
}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...