2017-12-03 19 views
0

私のコードの実行に問題があるため、私は助けが必要です。 私のデータベースでは、この形式の配列のような複数のselectを格納します:["5"、 "6"、 "7"、 "8"] json_encodeを使って配列を格納します。条件付きの二重foreach PHP

私は選択した倍数(https://www.virtuosoft.eu/code/bootstrap-duallistbox)のフォームを持っています。

この入力はテーブルのデータで満たされます。これは左のリストに入っています。

私は右のリストに自分のデータをデータベースに保存したいと思います。これを行うには、それぞれのオプションに対応するものを選択する必要があります。 しかし、私これを説明するためにいくつかのコードこれを行うには見当がつかない...私は私がもし条件で、二重のforeachを使用すると思うけど....

:保存されたすべてのオプションと

表: テーブル名を:結婚式
フィールド:選択したオプションで

表は

テーブル名を保存したID、タイトル:
フィールド手順:ID、参加者を=>このフィールドはnumbeを持っています以下のようなweddings.idのR [ "5"、 "6"、 "7"、 "8"]

私の選択リストを埋めるために、私は私のステップからデータを取得するには、この

<select multiple="multiple" id="participants" class="form-control" name="participants[]"> 
    @foreach ($weddings as $wedding) 
     <option value="{{ $wedding->id }}" >{{ $wedding->title }} </option> 
    @endforeach 
</select> 

を行いますこの

foreach(json_decode($step->participants) as $k => $v){ 
    echo '<option value="'.$v.'" selected>'.$v.'</option>'; 
} 

オプションに「選択済み」を入れる必要があるため、これは正しいリストに移動します。

結婚式テーブルでステップテーブルの値ストアを「選択」するために2つのforeachを組み合わせるにはどうすればよいですか?

私はあなたが私を理解してくれることを願っています。

ありがとうございました。

PS:私はLaravelを使用しています

+0

リンクまたは1つのマルチ選択ボックスと同じ2つの選択ボックスがありますか? – imox

答えて

1

これを試して、最も重要なことを理解してください!

// select all participants 
// for example lets say you got this from your database 
$data = '["5","7","9","2"]'; 
// now decode it 
$data = json_decode($data); 

$weddings = []; 
// convert values to integers 
foreach($data as $key => $value) 
{ 
    $weddings[$key] = (Int) $value; 
} 

// create select input 
$input = '<select>'; 

foreach($weddings as $id) 
{ 
    // lets say you want wedding id 5 to be selected 
    // all you have to do is add an If statement and that's it ! 
    if($id === 5) { 
     // this is wedding id 5 ! 
     $input .= '<option value="'.$id.'" selected>'.$id.'</option>'; 
    } else if ($id === 7) { 
      // do something with wedding id 7 ? 
     $input .= '<option value="'.$id.'" class="number7">'.$id.'</option>'; 
    } else { 
     $input .= '<option value="'.$id.'">'.$id.'</option>'; 
    } 
} 

// close select input tag 
$input .= '</select>'; 

echo $input; 
+0

選択した属性をphp変数に含めることもできます。これにより、一度だけ出力することができ、よりクリーンで管理しやすくなります。 –

+0

yeaしかし、わかりやすくない私は($ weedingId === 5? 'selected': '')のような何かをすることができることを知っている – azjezz

0

素晴らしい!!!できます。

しかし、最初のforeachの終了を2番目の後に変更する必要があるのは、ループの最後の項目しかないからです。

ありがとうございましたazjezz詳細については

、これは私の作業コードです:

<div id="select-participants" class="form-group {{ $errors->has('participants') ? 'has-error' : '' }}"> 
     <label for="participants" class="col-sm-2 control-label">{!! $errors->has('participants') ? '<i class="fa fa-times-circle-o"></i>' : '' !!}Participants</label> 
     <div class="col-sm-10"> 
       <select multiple="multiple" id="participants" class="form-control" name="participants[]"> 
        @php 
         $export_json_participants = json_decode($preparationStep->participants); 
        @endphp 
         @foreach($export_json_participants as $key => $value) 
          $export_json_participants[$key] = $value; 
          @foreach ($weddings as $wedding) 
           <option value="{{ $wedding->id }}" {{ $wedding->id == $export_json_participants[$key] ? 'selected' : '' }}>{{ $wedding->title }}</option> 
          @endforeach 
         @endforeach 
       </select> 
       @if ($errors->has('participants')) 
        <span class="help-block"> 
         <strong>{{ $errors->first('participants') }}</strong> 
        </span> 
       @endif 
     </div> 
    </div> 

はどうもありがとうございました、そしてそれは大丈夫だ、私は理解しました。 :-)