php - 如何使用相同的输入类型名称更新多个mysql行
问题描述
我正在创建一个网站。在这个网站中,只有一个 html 表单。但是,我将该表单包含在 foreach 中,然后根据数据库循环该表单。现在,我想更新表格。当我一次绑定一个表单时,我能够更新数据库值。但是,我无法一次更新所有表格。
如何只使用一个按钮单击一次更新所有表单?
这里是路线。
Route::put('/UserBookingDetailsUpdate/{id}', 'PaymentController@UserBookingDetailsUpdate');
这是视图。(MyDetails.blade.php)
<?php $count = 0; ?>
@foreach($GetAdultDetails as $GetAdultDetail)
<?php $count = $count + 1; ?>
<form class="form-horizontal UserBooking" action="{{ url('UserBookingDetailsUpdate/' .$GetAdultDetail['id']) }}" method="POST" enctype="multipart/form-data" id="UserBookingDetailsForm_{{$count}}">
{{ method_field('PUT') }}
{{ csrf_field() }}
<div class="panel panel-default">
<div id="collapseOne_{{$count}}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
<div class="row col-md-12">
<p class="de_topic" style="margin-top: 5px;">Personal Information</p>
<div class="form-group adult_space col-md-6 col-xs-6 respo_pdin">
<label class="col-sm-4 control-label adult_topic de_fname respo_pdin">First name</label>
<div class="col-sm-8 respo_pdin">
<div class="input-group adult_group">
<input type="text" class="form-control adult_input" value="{{$GetAdultDetail['adult_first_name']}}" name="adult_first_name" aria-label="...">
</div><!-- id[{{$GetAdultDetail['id']}}]['fname'] /input-group -->
</div>
</div>
<div class="form-group adult_space col-md-6 col-xs-6 respo_pdin">
<label class="col-sm-4 control-label adult_topic de_fname respo_pdin">Last name</label>
<div class="col-sm-8 respo_pdin">
<div class="input-group adult_group">
<input type="text" class="form-control adult_input" value="{{$GetAdultDetail['adult_last_name']}}" name="adult_last_name" aria-label="...">
</div><!-- id[{{$GetAdultDetail['id']}}]['lname'] /input-group -->
</div>
</div>
<div class="form-group adult_space col-md-6 col-xs-6 respo_pdin" style="margin-bottom: 9px;">
<label class="col-sm-4 control-label adult_topic de_fname respo_pdin">Gender</label>
<div class="col-sm-8 bh respo_pdin">
<select class="selectpicker" data-style="select-with-transition" name="adult_gender" title="Choose Adult" data-size="7">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</div>
</div>
</div>
</div>
<div class="row col-md-12">
<div class="">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseMore_01_{{$count}}" aria-expanded="false" aria-controls="collapseMore_01" role="tab" id="headingOne1" class="titlec">
<p class="panel-title_01">
More details <span class="arrow"><span></span><span></span></span>
</p>
</a>
</div>
<div class="panel panel-default in_panel">
<input type="submit" value="Save" name="AdultSaveNow_{{$count}}" class="btn btn-default fghkl de_save AdultSaveNow_{{$count}}" id="AdultSaveNow_{{$count}}">
</div>
</div>
</div>
</div>
</form>
@endforeach
这里是控制器。(MyDetailsController.php)
public function UserBookingDetailsUpdate(Request $request,$id)
{
$adult_usersCount = PassengerAdultDetails::where('pnr_id', $id)->get();
//$adult_usersNew = PassengerAdultDetails::find($id);
$GetAdults = DB::table('passenger_adult_details')->where('pnr_id', $id)->get()->toArray();
// for($i = 0; $i < $adult_usersCount->count() ; $i++)
//{
//$GetAdults = DB::table('passenger_adult_details')->where('pnr_id', $id)->get();
//echo $GetAdults[$i]->id ."<br>"; die();
$adult_users = PassengerAdultDetails::find($id);
$adult_users->adult_first_name = $request->get('adult_first_name');
$adult_users->adult_last_name = $request->get('adult_last_name');
$adult_users->adult_gender = $request->input('adult_gender');
$adult_users->update();
//}
return redirect()->back();
}
解决方案
将表单放入 aforeach
实际上是创建多个表单,并且您一次只能从 HTML 提交一个表单(如果您不做 JS/AJAX 的事情)。
将表单放在 s 之外并创建一个sforeach
数组。input
例如:
在视图中:
<form class="form-horizontal UserBooking" action="{{ url('UserBookingDetailsUpdate'}}" method="POST" enctype="multipart/form-data">
<?php $count = 0; ?>
@foreach($GetAdultDetails as $GetAdultDetail)
<?php $count = $count + 1; ?>
{{ method_field('PUT') }}
{{ csrf_field() }}
<div class="panel panel-default">
<div id="collapseOne_{{$count}}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
<input type="hidden" value="{{$GetAdultDetail['id']}}" name="adults[{{$count}}][id]">
<div class="row col-md-12">
<p class="de_topic" style="margin-top: 5px;">Personal Information</p>
<div class="form-group adult_space col-md-6 col-xs-6 respo_pdin">
<label class="col-sm-4 control-label adult_topic de_fname respo_pdin">First name</label>
<div class="col-sm-8 respo_pdin">
<div class="input-group adult_group">
<input type="text" class="form-control adult_input" value="{{$GetAdultDetail['adult_first_name']}}" name="adults[{{$count}}][first_name]" aria-label="...">
</div><!-- id[{{$GetAdultDetail['id']}}]['fname'] /input-group -->
</div>
</div>
<div class="form-group adult_space col-md-6 col-xs-6 respo_pdin">
<label class="col-sm-4 control-label adult_topic de_fname respo_pdin">Last name</label>
<div class="col-sm-8 respo_pdin">
<div class="input-group adult_group">
<input type="text" class="form-control adult_input" value="{{$GetAdultDetail['adult_last_name']}}" name="adults[{{$count}}][last_name]" aria-label="...">
</div><!-- id[{{$GetAdultDetail['id']}}]['lname'] /input-group -->
</div>
</div>
</div>
... ...
... ...
... ...
</div>
</div>
@endforeach
<div class="panel panel-default in_panel">
<input type="submit" value="Save" name="AdultSaveNow" class="btn btn-default fghkl de_save AdultSaveNow" id="AdultSaveNow">
</div>
</div>
</form>
在控制器中:
<?php
...
...
public function UserBookingDetailsUpdate(Request $request)
{
$adults = $request->input('adults');
foreach($adults as $adult) {
$adult_users = PassengerAdultDetails::find($adult['id']);
$adult_users->adult_first_name = $adult['first_name'];
$adult_users->adult_last_name = $adult['last_name'];
$adult_users->adult_gender = $adult['gender'];
$adult_users->update();
}
return redirect()->back();
}
在路线中:
Route::put('/UserBookingDetailsUpdate', 'PaymentController@UserBookingDetailsUpdate');
推荐阅读
- android - Zebra TC25 - 如何在后台继续接收广播意图
- android - 连接后不久发出的 Socket.IO 消息通常不会被 Android 客户端接收
- api - 了解 Vulkan 中的标志
- ruby-on-rails - 推送到 Gitlab 创建的存储库失败并出现错误
- php - Php\Ubuntu 虚拟链接
- css - 在过渡期间使 CSS 三角形浮动在图像上
- ios - 在 Swift 中直播时的所有因素?
- php - 如何解决插入到 php 中的错误
- linux - 当我的 linux 系统重新启动时,我应该使用什么 lilo 选项来设置要运行的脚本?
- javascript - 大型 JSON 数据跨页面持续存在