12 پست در این موضوع قرار دارد

سلام 

این یه زمینه دلخواه هست که تو نوشته ها تعریف شده یه کنترل 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  ممنون میشم راهنمایی کنید...

0

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


لینک به پست

سلام و درود

 

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

طبق اینجا پارامتر دوم تابع ای که برای دریافت فیلد ازش استفاده کردید post_id هست که اگر وارد نشده باشه برابر با آیدی پست جاری میشه که آیدی پست جاری فقط در حلقه ها و فایل single.php وجود داره. اگر قصد دارید خارج از حلقه ازش استفاده کنید باید آیدی پستی که قراره فیلدش رو براتون فراخوانی کنه رو به صورت دستی بهش بدید به شکل زیر:

<?php get_field_object($field_key, '123'); ?>

به جای 123 باید آیدی پست مربوطه را قرار دهید.

 

موفق باشید

1

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


لینک به پست
در 23 دقیقه قبل، naghmesara گفته است :

سلام و درود

 

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

طبق اینجا پارامتر دوم تابع ای که برای دریافت فیلد ازش استفاده کردید post_id هست که اگر وارد نشده باشه برابر با آیدی پست جاری میشه که آیدی پست جاری فقط در حلقه ها و فایل single.php وجود داره. اگر قصد دارید خارج از حلقه ازش استفاده کنید باید آیدی پستی که قراره فیلدش رو براتون فراخوانی کنه رو به صورت دستی بهش بدید به شکل زیر:


<?php get_field_object($field_key, '123'); ?>

به جای 123 باید آیدی پست مربوطه را قرار دهید.

 

موفق باشید

ممنون دوست عزیز

فقط یه سوال:

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

نمیشه گفت که option های یه باکس select رو که در زمان ساخت زمینه دلخواه درست میکنیم رو مستقیم از خود افزونه بگیره و دیگه post_id نوشته رو براش ست نکنیم؟

0

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


لینک به پست

ارسال شده در (ویرایش شده)

درود مجدد

 

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

اگر گزینه ها ثابته که چرا دارید از زمینه های دلخواه استفاده می کنید؟

ویرایش شده در توسط naghmesara
1

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


لینک به پست

***یه سوال دیگه نکته ریز و مهمه:

زمانی که مقادریر یک select option تگ رو بصورت دستی وارد میکنیم خب بعدش که بخوایم مقداری که ست و سابمیت شده رو بگیریم ساده اس و کافی مقداری که سابمیت شده که توسط هر متدی چه  $_POST و یا $_GET رو بگیریم و با یه حلقه سوئیچ میشه مقایسه کرد و خروجی رو نشون داد. ولی زمانیکه مثل کد الان که  option های تگ select از جایی دیگه ای فراخوانی میشن و تعدادشون متغییر هست باید چیکار کرد؟

یعنی فرض کنید یه فرمی هست که با متد $_GET داره مقدار این select option رو ارسال میکنه. چطوری مقداری که توسط $_GET ارسال شده رو بگیریم و echo کنیم که مثلا چی بوده؟

 

فرض کنید option که ست شده و ارسال شده این مقداری هست که تو عکس زیر مشخص شده:

597ce645abd0e_ScreenShot2017-07-30at00_15_43.png.0bd6ecaa3b5c6bd3d39776e1d09e3cc2.png

یا هر مقدار دیگه ای از این آپشن ها٬ حالا چطوری باید خیلی ساده چاپ کرد که چی بود؟

چون این مقادیر ثابت که نیستند ممکنه هر روز اضافه یا کم بشه.

 

ببخشید طولانی شد خواستم مطلب رو خوب برسونم که جای سوال و ابهامی نباشه!

:rolleyes:

 

1

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


لینک به پست
در 4 دقیقه قبل، naghmesara گفته است :

سلامی دوباره :)

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

====> بله گزینه های این سلکت باکس برای هر پست متفاوت هست٬ ولی آپشن های تگ سلکت تو همه پست ها هستن و گزینه سلکت از تو اونها انتخاب میشه!

اگر گزینه ها ثابته که چرا دارید از زمینه هایش دلخواه استفاده می کنید؟

====> نه گزینه ها ثابت نیستن چون ممکنه هر روز یه option به تگ سلکت اضافه یا کم بشه

 

0

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


لینک به پست
در 22 دقیقه قبل، m4xs051 گفته است :

***یه سوال دیگه نکته ریز و مهمه:

زمانی که مقادریر یک select option تگ رو بصورت دستی وارد میکنیم خب بعدش که بخوایم مقداری که ست و سابمیت شده رو بگیریم ساده اس و کافی مقداری که سابمیت شده که توسط هر متدی چه  $_POST و یا $_GET رو بگیریم و با یه حلقه سوئیچ میشه مقایسه کرد و خروجی رو نشون داد. ولی زمانیکه مثل کد الان که  option های تگ select از جایی دیگه ای فراخوانی میشن و تعدادشون متغییر هست باید چیکار کرد؟

یعنی فرض کنید یه فرمی هست که با متد $_GET داره مقدار این select option رو ارسال میکنه. چطوری مقداری که توسط $_GET ارسال شده رو بگیریم و echo کنیم که مثلا چی بوده؟

 

فرض کنید option که ست شده و ارسال شده این مقداری هست که تو عکس زیر مشخص شده:

597ce645abd0e_ScreenShot2017-07-30at00_15_43.png.0bd6ecaa3b5c6bd3d39776e1d09e3cc2.png

یا هر مقدار دیگه ای از این آپشن ها٬ حالا چطوری باید خیلی ساده چاپ کرد که چی بود؟

چون این مقادیر ثابت که نیستند ممکنه هر روز اضافه یا کم بشه.

 

ببخشید طولانی شد خواستم مطلب رو خوب برسونم که جای سوال و ابهامی نباشه!

:rolleyes:

 

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

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


لینک به پست

@naghmesara  ;)

 

یه سوال دیگه: :unsure:

چطور میشه مقدار یک option رو بعد از اینکه سابمیت میشه مجدد تو select box نشون داد؟

یعنی یه مقداری ست میشه بعد کاربر اون رو سابمیت میکنه و حالا که مثلا صفحه رفرش میشه اون مقداری که کاربر سامیت کرده رو نشون داد تو همون select box که کاربر بدونه چی رو ارسال کرده؟

 

سپاس...

0

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


لینک به پست

دوستان هیچکی نیست این کمک کنه این تاپیک رو به نتیجه برسونیم؟

0

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


لینک به پست
در 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>';

 

0

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


لینک به پست
در در 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>';

 

ممنون دوست عزیز بابت راهنمایی ولی متاسفانه این کد جواب نمیده!

:(

0

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


لینک به پست
در 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>

 

0

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


لینک به پست

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

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

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

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


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

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

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


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