如何将数组存储为数据库中每个值的单行



整个想法是,当用户单击复选框并保存时,表单应该与包含选中值的数组一起提交,并将它们作为每个值的单行保存在数据库中。我不知道这是否可能,但我相信你们有解决方案,或者可以帮助我?

这是我的表格:

<div class="">
<form style="width: 70%" method="POST" action="{{ URL('/admin/projects/services/save') }}"
enctype="multipart/form-data">
@csrf
<input type="hidden" name="id" id="id" value="{{ @$id }}">
<input type="hidden" name="projectid" id="projectid" value="{{ @$projectid }}">



<div class="row topSpacer">
<div class="col-3">
<p class="bold">Selected Services: <span class="red">*</span></p>
</div>
<div class="col-9">
<input type="text" id="selectedServices" name="selectedServices" value="" readonly>
</div>
</div>
<div class="row topSpacer">
<div class="col-3">
<p class="bold">Select a service: <span class="red">*</span></p>
</div>
<div class="col-9">

@foreach ($services as $service)
<input type="checkbox" name="service" value="<?php echo stripslashes($service->id); ?>">
<label for="service"><?php echo stripslashes($service->name); ?></label>
<br>
<hr>
@endforeach
@error('service')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
</div>
<div class="row topSpacerHuge">
<div class="col-12 textRight">
<button type="button"
onclick="window.location='{{ url('admin/projects/services/index/'.$projectid) }}'"
class="goBackBtn">Cancel</button>
<input class="saveBtn" id="saveBtn" type="submit" value="Save">
</div>
</div>
</form>
</div>

和我的脚本来获得复选框值:

<script>
$(function() {
$("input:checkbox[name='service']").click(function() {
$value = [];

$.each($("input:checkbox[name='service']:checked"), function() {
$value.push($(this).val());
$array = $value.join();

});
// console.log(value.join(", "));
$("#selectedServices").val($array);
})

});
</script>

对于实现检查值,我建议使用select标记你可以用[]赋予一个name属性,它会收集你的所有数据例如,查看我的项目文件,我正试图收集一些用户的名称:

<select name="users[]" id="example-with-maxHeight" class="multiselect-group" multiple >
@foreach($users as $user)
<option  @if($user->average < $averageParticipate )class="alert-danger" @endif value="{{$user->id}}">{{$user->name}} - {{$user->average}}</option>
@endforeach
</select>

请注意名称属性
中的用户[],现在在您的请求中,您可以访问所有选中的项目。

如果我们看看你的代码,可能是这样的:

<label for="service"><?php echo stripslashes($service->name); ?></label>
<select name="services[]" id="" class="multiselect-group" multiple >
@foreach($users as $user)
<option value = "{{$sevice->id}}"> <?php echo stripslashes($service->name); ?></option>
@endforeach
</select>

现在,在您的控制器中,您可以访问它们:

request->get('services');

它将返回一个选定项目的数组。

请注意,id属性帮助我与java脚本代码进行交互您可以将其重命名为自己的名称。

最新更新