رفتن به مطلب
برای استفاده از انجمن و عضـویت کلیک کنید.
جستجو در
  • تنظیمات بیشتر ...
نمایش نتایجی که شامل ...
جستجو در ...

آی پی اس فارسی؛ نخستین مرجع تخصصی سایت ساز IPS

شروعی حرفه ای با سایت ساز کامل همراه با پشتیبانی رایگان

  • مدیریت پیشرفته
  • انعطاف پذیری بالا
  • همه امکانات در یک سایت ساز

دانلود کنید !

نورنما

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

پست های پیشنهاد شده

نورنما    22

کاربر عادی

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

 

من در 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 ) ) );

 

ویرایش شده توسط نورنما

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
محمد قاسمی    1110

برنامه نویس رسمی IPS

درود.

خب شما باید یک 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

 

موفق باشید.

ویرایش شده توسط محمد قاسمی
  • پسند 1
  • تشکر 1

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


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

کاربر عادی

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

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

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

فقط با این کد زیر شماره عددی ردیفی که از 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'] ;

 

ویرایش شده توسط نورنما

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
محمد قاسمی    1110

برنامه نویس رسمی IPS

درود.

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

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

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

موفق باشید.

  • تشکر 1
  • ذوق زده 1

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


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

کاربر عادی

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

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

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

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

$araye_saaathe =array_unique ( $araye_saaathe );

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

ویرایش شده توسط نورنما

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
محمد قاسمی    1110

برنامه نویس رسمی IPS

درود.

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

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

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

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

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

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

 

موفق باشید.

  • تشکر 1
  • ذوق زده 1

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


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

کاربر عادی

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

تونستم با راهنمایی شما اول مقادیر ارایه رو بصورت معمولی که 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

ویرایش شده توسط نورنما

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
محمد قاسمی    1110

برنامه نویس رسمی IPS

درود.

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

var_dump($moteghayere_shoma);
die();

یا

print_r($moteghayere_shoma);
die();

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

  • تشکر 1
  • ذوق زده 1

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


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

کاربر عادی

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

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

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

این شکلی هست 

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

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

 

ویرایش شده توسط نورنما

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
محمد قاسمی    1110

برنامه نویس رسمی IPS

درود.

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

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

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

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

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

 

ویرایش شده توسط محمد قاسمی

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


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

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

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

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

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

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

×