根据所选数字的多个Div(LARAVEL)

时间:2019-06-30 14:52:53

标签: php jquery html laravel controller

我的代码有问题。根据另一篇文章:(Creating Multiple Divs Based on Number Chosen in Drop Down Menu) 我已经为我的代码提出了一些想法,但是有一个问题。我想将创建的div的所有输入插入到我的数据库中,但它仅记录最后一个div的输入。这是我的控制器设置:

$generals= new Instance;

$generalsnames=implode("",$_POST['generalname']);

$generalstime=implode("",$_POST['generaltime']);

$generals->Name= $generalsnames;

$generals->Time= $generaltime;

$generals->save();

你能帮我吗?谢谢你的建议

3 个答案:

答案 0 :(得分:0)

在您的HTML(刀片)代码中,在字段名称上添加“ []”。因此,您的字段名称应如下所示:

<input type="text" name="generalname[]">
<input type="text" name="generaltime[]">

代替

<input type="text" name="generalname">
<input type="text" name="generaltime">

因为如果您没有为字段名称指定数组,则只有带有此类名称的div的最后一个值将包含在路由的POST请求中。

然后在您的控制器中:

public function store(Request $request)
{
   $input = $request->all();
   //you might want to combine your arrays for easier saving
   $general_time = array_combine($input['generalname'], $input['generaltime']);

   //then you will use foreach statement to save all of your data
   foreach($general_time as $general => $time)
   {
      $generals = new Instance;
      $generals->Name = $general;
      $generals->Time = $time
      $generals->save();
   }
}

答案 1 :(得分:0)

@rkg提到您需要在刀片中使用[],然后在您的控制器上这就是您的代码。

$input = $request->all();
for($i=0; $i<count($input['generalname']); $i++)
{
    $generals= new Instance;
    $generals->Name= $input['generalname'][$i];
    $generals->Time= $input['generaltime'][$i];
    $generals->save();
}

答案 2 :(得分:0)

我知道了。

我混合了@Jovs和@rkg的解决方案。几个星期后,重新启动服务器,我开始工作了。已执行的步骤:

  • 在Blade.php中将[]添加到名称标签中
  • 在控制器中,我输入了@Jovs的代码(在for语句中您错过了一个“'”)
$input = $request->all();
for($i=0; $i<count($input['generalname']); $i++){
   $generals= new Instance;
   $generals->Name= $input['generalname'][$i];
   $generals->Time= $input['generaltime'][$i];
   $generals->save();
}

我遇到了“数组转换为字符串的问题”。我真的什么都没碰。我刚刚重新启动了服务器,但是后来我开始工作了。