仅在html表中插入填充的输入到数据库中

时间:2015-06-07 08:14:28

标签: php jquery laravel laravel-5

我正在构建一个Laravel 5应用程序,我正在使用jQuery DataTables插件。在数据表中,每行有3个输入字段。我想要做的是插入所有填充的行输入。在每一行中,您必须填写所有3个输入,以便将数据发布到数据库中。 (数据库是sql server。)我尝试了一些东西,但它没有用。这是我在控制器存储方法中尝试过的方法:

$dates = $request->get('month');
    $values = $request->get('value');
    $comments = $request->get('comment');
    $reports = []; // this will keep what we input in our DB
    /*if(!empty($row['month']) && !empty($row['value']) && !empty($row['comment'])){
        foreach($row as $rows){
            $index = +1;
        }
    }*/
    if(!empty($dates) && !empty($values)){
    for($i = 0; $i < count($dates); $i++)
    {
        //here i am dividing month and year
        $date = explode('-', $dates[$i]);
        $year = $date[0];
        $month = $date[1]; // <-- line 75

            $reports[] = Reports::create([
                'month' => $month,
                'year' => $year,
                'value' => $values[$i],
                'comment' => $comments[$i]
            ]);

        }
    }
    return $reports;

但这会引发一个错误:

ErrorException in ReportController.php line 75:
Undefined offset: 1

我搜索了它,它说我传递的是数组而不是字符串。

这是stacktrace(它的一部分):

at HandleExceptions->handleError('8', 'Undefined offset: 1', 'E:\socgen\soc-gen\app\Http\Controllers\ReportController.php', '75', array('request' => object(Request), 'dates' => array('2015-06', '2015-02', ''), 'values' => array('369', '22223', ''), 'comments' => array('878', '5466', ''), 'reports' => array(object(Reports)), 'i' => '1', 'date' => array(''), 'year' => '', 'month' => '06')) in ReportController.php line 75

感谢任何帮助或提示

1 个答案:

答案 0 :(得分:0)

php.net上的官方文档阅读以下有关爆炸功能的内容。

  

返回一个字符串数组,每个字符串都是 string 的子字符串,通过在字符串分隔符形成的边界上将其拆分而形成。

得出结论,php的explode函数只接受字符串作为参数,在你的情况下你传递一个数组。我建议你先将数组中的数据放入一个字符串中,然后将其传递给explode。 e.g

for($i = 0; $i < count($dates); $i++)
{
    //remove empty indexes from your array 
    array_diff( $dates[$i], array( '' ) );

    //create a new string and put your date into it.
    $dateString = $dates[$i];

    $date = explode('-', $dateString);
    $year = $date[0];
    $month = $date[1]; // <-- line 75

    //rest of your code goes here 
    }
}