sajad 729 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 سلام این یه زمینه دلخواه هست که تو نوشته ها تعریف شده یه کنترل select هست که یه سری option ها داخلش ست میشه. کد زیر برای نشون دادن این آبجکت هست: <div class="row"> <div class='DropDownField'> <div class='searchform-param'> <label class='searchform-label'>رشته مورد نظر خود را انتخاب کنید:</label> <span class='searchform-input-wrapper'> <?php $field_key = "reshteye_tahsili"; $field = get_field_object($field_key); if( $field ) { echo '<select name="' . $field['key'] . '">'; foreach( $field['choices'] as $k => $v ) { echo '<option value="' . $k . '">' . $v . '</option>'; } echo '</select>'; } ?> </span> </div> </div> </div> این کد رو زمانی که تو فایل single.php میزارم به راحتی آبجکت نشون داده میشه! ولی زمانیکه این کد رو تو یه فایل دیگه استفاده میکنم اررور میگیرم: Warning: Invalid argument supplied for foreach() و ادامه میگه که لاین ۵۳ مشکل داره. لاین ۵۳ همین دستور فورایچم قرار داره @naghmesara @Fenix.ir ممنون میشم راهنمایی کنید... نقل قول لینک به ارسال
naghmesara 315 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 سلام و درود شما توی فایل های دیگه معلوم نیست متای کدوم پست رو میخواید که براتون توی لیست نشون بده. طبق اینجا پارامتر دوم تابع ای که برای دریافت فیلد ازش استفاده کردید post_id هست که اگر وارد نشده باشه برابر با آیدی پست جاری میشه که آیدی پست جاری فقط در حلقه ها و فایل single.php وجود داره. اگر قصد دارید خارج از حلقه ازش استفاده کنید باید آیدی پستی که قراره فیلدش رو براتون فراخوانی کنه رو به صورت دستی بهش بدید به شکل زیر: <?php get_field_object($field_key, '123'); ?> به جای 123 باید آیدی پست مربوطه را قرار دهید. موفق باشید 1 نقل قول لینک به ارسال
sajad 729 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در 23 دقیقه قبل، naghmesara گفته است : سلام و درود شما توی فایل های دیگه معلوم نیست متای کدوم پست رو میخواید که براتون توی لیست نشون بده. طبق اینجا پارامتر دوم تابع ای که برای دریافت فیلد ازش استفاده کردید post_id هست که اگر وارد نشده باشه برابر با آیدی پست جاری میشه که آیدی پست جاری فقط در حلقه ها و فایل single.php وجود داره. اگر قصد دارید خارج از حلقه ازش استفاده کنید باید آیدی پستی که قراره فیلدش رو براتون فراخوانی کنه رو به صورت دستی بهش بدید به شکل زیر: <?php get_field_object($field_key, '123'); ?> به جای 123 باید آیدی پست مربوطه را قرار دهید. موفق باشید ممنون دوست عزیز فقط یه سوال: من اون کد رو دارم تو صفحه نخستم قرار میدم تا این فیلد ها رو نشون بده برام. اینکاری که شما گفتید بعد مشکلاتی ایجاد نمیکنه؟ که کد post_id یک نوشته رو بهش بدم؟ نمیشه گفت که option های یه باکس select رو که در زمان ساخت زمینه دلخواه درست میکنیم رو مستقیم از خود افزونه بگیره و دیگه post_id نوشته رو براش ست نکنیم؟ نقل قول لینک به ارسال
naghmesara 315 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 (ویرایش شده) درود مجدد مگه گزینه های این سلکت باکس برای هر پست متفاوت نیست؟ اگر گزینه ها ثابته که چرا دارید از زمینه های دلخواه استفاده می کنید؟ ویرایش شده مرداد 96 توسط naghmesara 1 نقل قول لینک به ارسال
sajad 729 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 ***یه سوال دیگه نکته ریز و مهمه: زمانی که مقادریر یک select option تگ رو بصورت دستی وارد میکنیم خب بعدش که بخوایم مقداری که ست و سابمیت شده رو بگیریم ساده اس و کافی مقداری که سابمیت شده که توسط هر متدی چه $_POST و یا $_GET رو بگیریم و با یه حلقه سوئیچ میشه مقایسه کرد و خروجی رو نشون داد. ولی زمانیکه مثل کد الان که option های تگ select از جایی دیگه ای فراخوانی میشن و تعدادشون متغییر هست باید چیکار کرد؟ یعنی فرض کنید یه فرمی هست که با متد $_GET داره مقدار این select option رو ارسال میکنه. چطوری مقداری که توسط $_GET ارسال شده رو بگیریم و echo کنیم که مثلا چی بوده؟ فرض کنید option که ست شده و ارسال شده این مقداری هست که تو عکس زیر مشخص شده: یا هر مقدار دیگه ای از این آپشن ها٬ حالا چطوری باید خیلی ساده چاپ کرد که چی بود؟ چون این مقادیر ثابت که نیستند ممکنه هر روز اضافه یا کم بشه. ببخشید طولانی شد خواستم مطلب رو خوب برسونم که جای سوال و ابهامی نباشه! 1 نقل قول لینک به ارسال
sajad 729 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در 4 دقیقه قبل، naghmesara گفته است : سلامی دوباره مگه گزینه های این سلکت باکس برای هر پست متفاوت نیست؟ ====> بله گزینه های این سلکت باکس برای هر پست متفاوت هست٬ ولی آپشن های تگ سلکت تو همه پست ها هستن و گزینه سلکت از تو اونها انتخاب میشه! اگر گزینه ها ثابته که چرا دارید از زمینه هایش دلخواه استفاده می کنید؟ ====> نه گزینه ها ثابت نیستن چون ممکنه هر روز یه option به تگ سلکت اضافه یا کم بشه نقل قول لینک به ارسال
naghmesara 315 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در 22 دقیقه قبل، m4xs051 گفته است : ***یه سوال دیگه نکته ریز و مهمه: زمانی که مقادریر یک select option تگ رو بصورت دستی وارد میکنیم خب بعدش که بخوایم مقداری که ست و سابمیت شده رو بگیریم ساده اس و کافی مقداری که سابمیت شده که توسط هر متدی چه $_POST و یا $_GET رو بگیریم و با یه حلقه سوئیچ میشه مقایسه کرد و خروجی رو نشون داد. ولی زمانیکه مثل کد الان که option های تگ select از جایی دیگه ای فراخوانی میشن و تعدادشون متغییر هست باید چیکار کرد؟ یعنی فرض کنید یه فرمی هست که با متد $_GET داره مقدار این select option رو ارسال میکنه. چطوری مقداری که توسط $_GET ارسال شده رو بگیریم و echo کنیم که مثلا چی بوده؟ فرض کنید option که ست شده و ارسال شده این مقداری هست که تو عکس زیر مشخص شده: یا هر مقدار دیگه ای از این آپشن ها٬ حالا چطوری باید خیلی ساده چاپ کرد که چی بود؟ چون این مقادیر ثابت که نیستند ممکنه هر روز اضافه یا کم بشه. ببخشید طولانی شد خواستم مطلب رو خوب برسونم که جای سوال و ابهامی نباشه! توجه کنید وقتی فرمی که توش این سلکت باکس هست دکمه subimt اش زده میشه اطلاعات فرم با متد انتخاب شده ارسال میشه به اکشن فرم حالا مثلا اینجا فرض کنید سلکت باکس شما توی یه فرم مثل فرم زیر هست: <form method="post" action="process.php"> <select name="field_596a1410cfcf1"> <option value="رشته معارف اسلامی">رشته معارف اسلامی</option> </select> <input type="submit" value="Submit the form"> </form> اینجا وقتی اون آپشن رو انتخاب میکنیم و دکمه سابمیت فرم رو میزنیم اطلاعات با متد post میرن به فایل proccess.php حالا اینجا فایل proccess.php رو داریم: <?php $option = isset($_POST['field_596a1410cfcf1']) ? $_POST['field_596a1410cfcf1'] : false; if ($option) { echo $option; } else { echo "گزینه ای را انتخاب کنید"; exit; } خوب تو فایل چون فرم با متد post ارسال کرده value آپشن رو ، پس با متغییر $_POST باید بگیریم مقدار ارسالی رو. در توضیح فایل php باید بگم که اگر مقداری ارسال بشه به proccess.php اون مقدار در متغییر option قرار میگیره و اگر چیزی ارسال نشده باشه به این فایل مقدار false رو توی خودش جا میده. بعد توی شرط هم داریم که اگر مقداری ارسال شده بود خود مقدار رو چاپ کن اگر هم ارسال نشده بود پیام "گزینه ای را وارد کنید" را چاپ کن. موفق باشید 1 نقل قول لینک به ارسال
sajad 729 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 @naghmesara یه سوال دیگه: چطور میشه مقدار یک option رو بعد از اینکه سابمیت میشه مجدد تو select box نشون داد؟ یعنی یه مقداری ست میشه بعد کاربر اون رو سابمیت میکنه و حالا که مثلا صفحه رفرش میشه اون مقداری که کاربر سامیت کرده رو نشون داد تو همون select box که کاربر بدونه چی رو ارسال کرده؟ سپاس... نقل قول لینک به ارسال
sajad 729 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 دوستان هیچکی نیست این کمک کنه این تاپیک رو به نتیجه برسونیم؟ نقل قول لینک به ارسال
Ebrahimzadeh 36 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در 36 دقیقه قبل، m4xs051 گفته است : دوستان هیچکی نیست این کمک کنه این تاپیک رو به نتیجه برسونیم؟ echo '<select name="' . $field['key'] . '">'; foreach( $field['choices'] as $k => $v ) { $selected=""; if($_POST['field_596a1410cfcf1']== $k){ $selected="selected"; } echo '<option value="' . $k . '" '.$selected.'>' . $v . '</option>'; } echo '</select>'; نقل قول لینک به ارسال
sajad 729 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در در 8/2/2017 at 12:14، Ebrahimzadeh گفته است : echo '<select name="' . $field['key'] . '">'; foreach( $field['choices'] as $k => $v ) { $selected=""; if($_POST['field_596a1410cfcf1']== $k){ $selected="selected"; } echo '<option value="' . $k . '" '.$selected.'>' . $v . '</option>'; } echo '</select>'; ممنون دوست عزیز بابت راهنمایی ولی متاسفانه این کد جواب نمیده! نقل قول لینک به ارسال
Ebrahimzadeh 36 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در 16 ساعت قبل، m4xs051 گفته است : ممنون دوست عزیز بابت راهنمایی ولی متاسفانه این کد جواب نمیده! این کد درست البته من کامل ننوشتم منظورم این بود که باد مقدار که پست میشه رو با value option هاتون چک کنید مثل کد زیر <form method="post"> <select name="hh"> <option value="user" <?php if($_POST['hh']=='user') echo 'selected'; ?> >user</option> <option value="rol" <?php if($_POST['hh']=='rol') echo 'selected' ?> >rol</option> <option value="mail" <?php if($_POST['hh']=='mail') echo 'selected' ?>>mail</option> </select> <input type="submit" value="hhhhh"> </form> نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .