我有一个多选复选框列表。我想使用选中的复选框在列表中显示储值。
用户信息存储在 Partner_Prefence 表中,用户宗教列名为 p_religion
$profile_data= DB::table('partner_prefence')->select('p_religion')->first();
从宗教表中获取宗教
$religion_data=DB::table('religion')->select('religion_id','religion_name')->orderby('religion_name')->get();
多选列表
<select multiple="multiple" name="religion[]">
@foreach($religion_data as $religion)
<option value="{{$religion->religion_id}}" {{$profile_data->p_religion == $religion->religion_id ? 'selected' : ''}}>{{$religion->religion_name}}</option>
@endforeach
</select>
我无法显示用户拥有哪些宗教信仰
{{$profile_data->p_religion == $religion->religion_id ? 'selected' : ''}}
答案 0 :(得分:0)
如果p_religion列是多选列表,是否保存了多个ID?然后将使用li.arrow
代替in_array()
。
$profile_data->p_religion == $religion->religion_id
添加了in_array ($religion->religion_id, explode(',', $profile_data->p_religion))
调用,以在您存储内爆数组的偶然机会。
您还可以尝试对if语句内联使用Blade语法,以查看其显示是否不同。
explode()
答案 1 :(得分:0)
据我了解,您具有多选表格,因此您需要显示选中的多列。
您将id存储为字符串,但是很难检查字符串中的特定数字。如果将字符串转换为数组,则可以使用in_array()
方法轻松检查。如果给定数组中存在给定值,则此方法将返回true
<select multiple="multiple" name="religion[]">
{{-- no need to explode every time, it will reduce your performance --}}
@php($religions = explode(',', $profile_data->p_religion))
@foreach($religion_data as $religion)
<option
value="{{$religion->religion_id}}"
{{--if user religion id exist in religions then mark as selected--}}
{{in_array($religion->religion_id,$religions) ? "selected" : ""}}>
{{$religion->religion_name}}
</option>
@endforeach
</select>