我正在创建一个Ticket Reservation System,我想将数据插入数据库。像往常一样,我使用HTML表单,所有数据都进入数据库。我想在数据库中插入多个座位号。 (座位号码=项目)
但是,当我在SeatsController.php中使用此功能时,我只能插入一个座位号。
public function seatsinsert(Request $request) {
$date = $request->input('date');
$st = $request->input('st');
$item = $request->input('items');
$user = new Seats();
$user->date = $date;
$user->st = $st;
$user->item = $item;
$this->validate($request, [
'date' => 'required'
]);
$user->save();
$request->session()->flash('Msg', 'Successfully Inserted !!');
return redirect('Seats');
}
然后我在SeatsController.php中更改了我的功能,如下所示,在数据库中插入多个座位号。但是,现在我无法插入任何数据。在我的控制台中,它显示了这个错误 -
无法加载资源:服务器响应状态为500 (内部服务器错误)。
public function seatsinsert(Request $request)
{
$date = $request->input('date');
$st = $request->input('st');
$item = $request->input('items');
//$item = item;
$this->validate($request, [
'date' => 'required'
]);
foreach($request->input("items") AS $item){
$user = new Seats();
$user->date = $date;
$user->st = $st;
$user->item = $item;
$user->save();
}
$request->session()->flash('Msg', 'Successfully Inserted !!');
return redirect('Seats');
}
我该如何解决这个问题?
这是我的Seats.blade.php
<form class="form-horizontal" id="form1" method="POST" action="{{ route('seatsinsert') }}" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="dt"> <br>
@if(session()->has('Msg'))
<h4 class="alert alert-success"> {{ session()->get('Msg') }} </h4>
@endif
<div class="form-group row">
<label for="example-date-input" class="col-2 col-form-label">Select Date :</label>
<div class="col-10">
<input class="form-control" type="date" name="date" placeholder="mm-dd-yyyy" id="example-date-input">
</div>
</div>
<div class="form-group">
<label for="exampleSelect1">Select Time :</label>
<select name="st" class="form-control" id="exampleSelect1">
<option>10.30 am</option>
<option>1.30 pm</option>
<option>4.30 pm</option>
<option>7.30 pm</option>
</select>
</div>
</div>
<h2 style="font-size:1.2em;font-family: Times New Roman;"> Choose seats by clicking below seats :</h2>
<div id="holder">
<ul id="place">
</ul>
</div>
<input type="submit" class="btn btn-primary" id="btnShowNew" value="Continue"> <br><br>
<script type="text/javascript">
$(function () {
$('#btnShowNew').click(function (e) {
e.preventDefault();
var items = [];
$.each($('#place li.' + settings.selectingSeatCss + ' a'), function (index, value) {
items.push($(this).attr('title'));
});
console.log(items);
// $(location).attr('href', 'Seats');
$.ajax({
type: "post",
url: "{{ route('seatsinsert') }}",
data: {
_token: "{{ csrf_token() }}",
items: items,
date: $('input[name=date]').val(),
st: $('select[name=st]').val()
}, success: function(data){
$("form").trigger("reset");
$('#success_message').fadeIn().html("Text");
}
});
});
});
</script>
</form>
这是我的路线。
Route::post('seatsinsert', [
'uses' => 'SeatsController@seatsinsert',
'as' => 'seatsinsert'
]);
这是Laravel错误日志
local.ERROR:为foreach()提供的参数无效 {&#34; exception&#34;:&#34; [object](ErrorException(code:0):无效的参数 为foreach()提供 d:\ wamp64 \ WWW \ FinalProject \应用\ HTTP \控制器\ SeatsController.php:28)
SeatsController.php:28是
foreach($ request-&gt; input(&#34; items&#34;)AS $ item){
我使用了dd($ request-&gt;输入(&#39; items&#39;));并单击提交按钮,没有任何反应。但是,当我从浏览器检查控制台时,它会向我显示此错误 -
POST http://localhost/FinalProject/public/seatsinsert 500 (Internal Server Error)
ajax @ jquery.min.js:19
(anonymous) @ Seats:442
handle @ jquery.min.js:19
(anonymous) @ jquery.min.js:19
jquery.min.js:19 XHR finished loading: POST "
答案 0 :(得分:0)
在存储到数据库之前,将座位号转换为json字符串并存储如下。
在你的控制器中
exp[, `:=`(diff = num1 - unlist(num2))]
之后显示座位号,您可以使用 json_decode 功能进行解码
答案 1 :(得分:0)
问题是通过ajax请求传递数组。要通过ajax传递数组,您必须JSON.stringify()
数组。
$.ajax({
type: "post",
url: "{{ route('seatsinsert') }}",
data: {
_token: "{{ csrf_token() }}",
items: JSON.stringify(items),
date: $('input[name=date]').val(),
st: $('select[name=st]').val()
}, success: function(data){
$("form").trigger("reset");
$('#success_message').fadeIn().html("Text");
}
});
在此,数组items
将转换为json以传递ajax请求。
还有一件事,为了获得更好的体验,你不应该在循环中放置SQL查询。