Javascript HTML:将星级评定提交到我的SQL数据库

Javascript HTML:将星级评定提交到我的SQL数据库,javascript,php,Javascript,Php,我目前有一个工作审查表,用户可以写一个关于酒店的审查。到目前为止,它接受了一个标题和正文,但我现在希望实现一个星级,以便用户选择一个等级,并将其提交到我的数据库。我目前有代码,用户可以提交标题和正文,但星级评级不提交,也不提交到我的数据库。有人能提供建议吗 ReviewController.php public function store(Request $request) { $this->validate($request, [ 'title' =&g

我目前有一个工作审查表,用户可以写一个关于酒店的审查。到目前为止,它接受了一个标题和正文,但我现在希望实现一个星级,以便用户选择一个等级,并将其提交到我的数据库。我目前有代码,用户可以提交标题和正文,但星级评级不提交,也不提交到我的数据库。有人能提供建议吗

ReviewController.php

    public function store(Request $request)
{
    $this->validate($request, [
        'title' => 'required' ,
        'body' => 'required' ,
        'post_id' => 'required'
    ]);

    $review = new Review;
    $review->title = $request->input('title');
    $review->body = $request->input('body');
    $review->rating = $request->input('rating');
    $review->post_id = $request['post_id'];
    $review->save();
    return redirect('/posts')->with('success', 'post created');
}
Show.blade.php

    <h1>Reviews</h1>
@if(count($review) > 1)
    @foreach($review as $reviews)
        <div class= "well"> 
            <h3><a href="/reviews/{{$reviews->title}}">{{$reviews->title}} </a>{{$reviews->rating}}</h3><small>{{$reviews->created_at}}</small><br>
            <small>{{$reviews->body}}</small> 
           <br>
           <br>
        </div>

        @endforeach

        @else
    </p>no posts found</p>
    @endif     
@endsection  
评论
@如果(计数($review)>1)
@foreach($review as$reviews)
{{$reviews->rating}{{$reviews->created_at}{br>
{{$reviews->body}


@endforeach @否则

找不到帖子

@恩迪夫 @端部
Javascript:

var count;
 function starmark(item)
{
  count=item.id[0];
  sessionStorage.starRating = count;
  var subid= item.id.substring(1);
    for(var i=0;i<5;i++)
      {
        if(i<count)
      {
    document.getElementById((i+1)+subid).style.color="orange";
      }
        else
      {
    document.getElementById((i+1)+subid).style.color="black";
    }
        }
            }
var计数;
功能starmark(项目)
{
计数=项目id[0];
sessionStorage.starRating=计数;
var subid=item.id.substring(1);
对于(var i=0;i虽然
元素可以以表单形式发送数据,但
元素不能。现在,您正在使用JavaScript中的函数,通过尝试从悬停或单击的跨度中获取值来模拟这种行为。
sessionStorage.starting=count
应该是
sessionStorage.setItem('starting',count)
将值存储到会话存储中。但这不是罪魁祸首

不要使用
元素,而是使用
元素来表示用户给出的评级。虽然样式设置看起来很困难,但使用
元素作为样式设置点可以相当容易。当您将
for
属性连接到它所属的
元素的id时,it变为可点击。这意味着每当我点击标签时,输入也会被点击并被选中

因此,您可以隐藏输入并设置标签样式。在CSS中,您可以根据当前选择的输入说明单击的标签的外观。此处的
:checked
psuedo选择器是一个真正的救命稻草

将所有这些放在表单中,可以将当前选择的单选按钮发送到服务器,并带有适当的
名称
对,而无需执行任何JavaScript操作

查看下面的代码片段,看看它是否有效。JavaScript部分可以忽略,因为它只是一个演示

/**
*用于演示目的。
*记录当前提交的“评级”值。
*/
const form=document.querySelector('form');
form.addEventListener('submit',event=>{
const formData=新formData(event.target);
const rating=formData.get('rating');
控制台日志(额定值);
event.preventDefault();
});
.star输入{
显示:无;
}
.明星{
颜色:金色;
}
.star输入:选中+.star~.star{
颜色:白色;
}

发送

不客气:)。如果这是一个新问题,请将其作为新问题提交。这将有助于保持此线程的干净性,并可能有助于其他具有相同问题的人。否则,如果它与我给出的答案有关或我留下了一些未回答的问题,则拍摄。我将两者都做,我需要知道的是,现在它存储在我的数据库中,我将如何将其输出为星星。在我的数据库中,它存储为3、4或5(无论用户输入什么),我如何将其输出为星形。现在,我在Show.blade.php(更新)中有以下代码,您可以看到它输出{{$reviews->ratings},但是我需要它输出为星形