2017-01-21 4 views
0

で現在の値を更新するユーザーは複数のフォーム要素(繰り返し選択ボックス)を動的に生成できるフォームを用意しています。私の質問に関連するフォームコードは次のとおりです。私はその後、(データベースエントリのための)シリアル化配列$ _POST [is_business]を投稿するこのフォームを使用動的フォーム要素。 JS

for ($i=0; $i < $number; $i++) {        
    <label for="is_business"> Is A Business?</label> 
    <select class="target form-control look2" id="is_business" name="is_business//note the array on name 
     <option value="" selected disabled="disabled">select option</option> 
     <option value="1">Yes</option> 
     <option value="0">No</option>                      
    </select> 
}       

。ユーザーが生成する選択ボックスの数に関係なく、すべてが完璧に機能します。

私がしたいことは、以前の投稿された値をデータベースから選択して復元した状態で、各選択ボックスを動的フォームで設定して、シリアル化しないことです。私は、データベースから選択されたデータをチェックして、それがあまりにも正常に見える、シリアライズ文字列(すなわち配列)予想通りの印刷...

//unserialized array values selected from database. Count was set to three. Answers were all 'yes' 

[is_business_db] => Array(
    [0] => 1 //yes 
    [1] => 1 //yes 
    [2] => 1 //yes 
) 

問題:私はis_business_db配列の値を使用したいの各ようにダイナミックに生成された選択ボックス.... name = is_business [] ...は、ユーザーがページに戻ったときに正しい選択値を表示します。私は私のPHPループ(明らかに閉じる/ phpタグを開く)に生成された最初の選択ボックスのためにうまく動作する次のjavascriptを挿入しようとしました。

<script> 
    $('#is_business').val('<?php echo $is_business_status?>'); 
</script> 

私も私のスクリプト...同じ問題の終わりに別々のループで同じJSを挿入する(実際には期待していない成功)試してみました...唯一の最初の選択ボックスが更新されます。

<?php 

    for ($i=0; $i < $number; $i++) //php loop 
    { 
     $is_business_status=$is_business_db[$i]; 
?> 
     <script> 
      $('#is_business').val('<?php echo $is_business_status?>'); 
     </script> 
<?php 
    } 
?>  

私は明らかにループを正しく実行していません。どんな助けもありがとう。

答えて

0

誰かがこの質問に興味があったなら、何時間か頭を引っ掻いた後、私は明らかに何か間違ったことを実感し、問題を修正しました。特にエレガントではありませんが、ダイナミックに作成された選択ボックスがリフレッシュまたはページビストに選択された値を返すことで苦労している人にとっては効果的です。 ( - PHPの配列、すなわちシリアライズデータベース列として)、次いで

     //$is_business_db=serialize($is_business) create array from database string 
         //$number=count($is_business_db) 

         for ($i=0; $i < $number; $i++) //number is a count of the array values 

         <div class="input_field_remove">      
           <div class="form-group"> 

             <label for="is_business"> Is A Business?</label> 
             <select class="target form-control look2" id="is_business'.$i.'" name="is_business[]"> 
              <option value="" selected disabled="disabled">select option</option> 
              <option value="1">Yes</option> 
              <option value="0">No</option> 

              </select> 
           </div> 
         </div> 

そしてjavacript ... ノートは... PHPのデータをキャプチャするためにJSONエンコードを使用

エコー、HTML ....ジャバスクリプト内。

    <?php $index_max=count($is_business_db) ?> 

        <script> 
          var index_max='<?php echo $index_max;?>'; 
          var value = <?php echo json_encode($is_business_db) ?><!---this is the critical bit----> 
          //var data = JSON.parse(value);//this is recommended -NOT USED- to ensure good js code-but not crucial in all situations 

          //now loop the javascript array and push the current selected values to the user-generated select boxes 
          for (index=0; index < index_max; index++) 
          { 
          $("#is_business"+ index).val(value[index]); 
          } 
        </script> 

これは将来誰かに役立つことを願っています。

関連する問題