Khudadad's avatar

How to insert multiple rows with multiple fields

Hi everyone, I want to insert multiple rows into database from dynamic form generated via jquery, I have some issue with this, I googled but didn't find the solution. any help.

jquery:

$('#mark-entry>tbody').empty();
                $.each(response, function (exam, stObj) {
                    $('#mark-entry>tbody').append('<tr><td>'+no+'</td><td>' + stObj.name + '</td>' + '<td>' + stObj.fName + '</td>' +
                        '<td><input type="text" class="form-control" name="rows['+i+'][written]"></td>' +
                        '<td><input type="text" class="form-control" name="rows['+i+'][read]"></td>' +
                        '<td><input type="text" class="form-control" name="rows['+i+'][activity]"></td>' +
                        '<td><input type="text" class="form-control" name="rows['+i+'][homework]"></td>' +
                        '<td><input type="text" class="form-control" name="rows['+i+'][total]"></td></tr>' +
                        '<input type="hidden" name="rows['+i+'][studentId]" value="'+ stObj.id +'" >'
                    );
                    no++;
                    i++;
                });

Controller:

public function storeMarks()
  {
      $inputs = Input::get('rows');
      $marks = array();
      foreach ($inputs as $input)
            {
         dd($input);
    //            $marks[] = new StudentMark(array(
    //                'course_id'=>Input::get('course'),
    //                'semi_written_test'=>$input['written'],
    //                'semi_reading_test'=>$input['read'],
    //                'semi_class_activity'=>$input['activity'],
    //                'semi_homework'=>$input['homework'],
    //                'semi_total'=>$input['total'],
    //                'student_id'=>$input['studentId'],
    //            ));
            }
           $marks->save();
          return redirect()->back();
     }
0 likes
3 replies
ahuggins's avatar

Could you change this:

foreach ($inputs as $input)
            {
         dd($input);
    //            $marks[] = new StudentMark(array(
    //                'course_id'=>Input::get('course'),
    //                'semi_written_test'=>$input['written'],
    //                'semi_reading_test'=>$input['read'],
    //                'semi_class_activity'=>$input['activity'],
    //                'semi_homework'=>$input['homework'],
    //                'semi_total'=>$input['total'],
    //                'student_id'=>$input['studentId'],
    //            ));
            }

To This:

foreach ($inputs as $input)
            {

                $marks[] = new StudentMark(array(
                    'course_id'=>Input::get('course'),
                    'semi_written_test'=>$input['written'],
                    'semi_reading_test'=>$input['read'],
                    'semi_class_activity'=>$input['activity'],
                    'semi_homework'=>$input['homework'],
                    'semi_total'=>$input['total'],
                    'student_id'=>$input['studentId'],
                ));
            }
StudentMark::create($marks);

You are calling save() on an array, and that's not going to work. You can pass an array to the appropriate Model's create method, and that should work. But you could also use a Collection and it might make things a little easier.

1 like
achieve100's avatar

@ahuggins I have tried to make a same pattern to try to save multiple rows of data with additional data to a new table. It went through, but not really insert any data to the table although there is no error message. I even used the above jquery for those input data by using foreach. But, it doesn't work yet. Below is my code in the controller. Thanks.

     <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Timetracks;
use App\Popage;
use App\Fac;
use DB;

class SearchController extends Controller
{
   
    public function update_search_cen(Request $Request){
        
        $Timetrack = new Timetracks; 
    $Timetrack->Date = $Request->Date;
        $Timetrack->Badge = $Request->Badge;
        $Timetrack->CEN = $Request->CEN;
        $Timetrack->PFN = $Request->PFN;
        $Timetrack->LNAM = $Request->LNAM;
        $Timetrack->FNAM = $Request->FNAM;
        $Timetrack->SEX = $Request->SEX;
        $Timetrack->RACE = $Request->RACE;
        $Timetrack->SPRB_CD = $Request->SPRB_CD;
        $Timetrack->OutTime = $Request->OutTime;
        $Timetrack->InTime = $Request->InTime;
        $Timetrack->Reason = $Request->Reason;
        $Timetrack->Comment = $Request->Comment;
        $Timetrack->FAC = $Request->FAC;
        $Timetrack->HFAC = $Request->HFAC;
        $Timetrack->HCOD_CD = $Request->HCOD_CD;
        // $Timetrack->save();
        $Request->user()->posts()->save($Timetrack);
      
       
        return redirect()->route('home')->with(['message' => 'The record has been successfully saved!']);
          
    }

}

part of my home.blade.php

              <tr id="table-header">
                                              
                                                 
                                              <!-- <th></th> -->
                                                  <!-- <th></th> -->
                                             
                                              <th>Date</th>
                                              <th>Badge</th>
                                              <th>CEN</th>
                                              <th>PFN</th>
                                              <th>LNAM</th>
                                              <th>FNAM</th>
                                              <th>SEX</th>
                                              <th>RACE</th>
                                              <th>SPRB</th>
                                              <th>Out Time</th>
                                              <th>In Time</th>
                                              <th>Reason</th>
                                              <th>Comment</th>
                                              <th>Facility</th>
                                              <th>HFAC</th>
                                              <th>HCOD</th>
                                              <th>

                                               <form action="{{ route('update_log') }}" method="post" class="form" role="form" enctype="multipart/form-data">
                                                <input type="hidden" name="_token" value="{{{ csrf_token() }}}" />
                                                <button id="btn-save" name="btn-save" type="submit" name="submit" class="btn btn-warning btn-lg btn-save1"><span class="glyphicon glyphicon-upload"></span> Save</button>
                                              
                                            
                                              </th>
                                          
                                          </tr>
                                           
                                             @foreach($Popages as $Popage)
                                            <tbody id="mark-entry"> 
                                          <tr>
                                             
                                              <td><input type="text" class="Date" id="Date" name="Date[]" value="<?php echo $today = date("Y-m-d");  ?>"></td>

                                  
                                              <td><input type="text" class="Badge" id="Badge" name="Badge[]" placeholder="Badge Number" value="{{ Auth::user()->badge }}">
                                              </td>
                                              <td>
                                               <input class="CEN" type="text" id="CEN" name="CEN[]" value="{{ $Popage->CEN }}">
                                           
                                              </td>

                                              <td>
                                               <input class="PFN" type="text" id="PFN" name="PFN[]" value="{{ $Popage->PFN }}">
                                          
                                              </td>
                                              <td>
                                               <input class="LNAM" type="text" id="LNAM" name="LNAM[]" value="{{ $Popage->LNAM }}">
                                              
                                              </td>
                                              <td>
                                               <input class="FNAM" type="text" id="FNAM" name="FNAM[]" value="{{ $Popage->FNAM }}">
                                            
                                              </td>
                                              <td>
                                               <input class="SEX" type="text" id="SEX" name="SEX[]" value="{{ $Popage->SEX }}">
                                             
                                              </td>
                                              <td>
                                               <input class="RACE" type="text" id="RACE" name="RACE[]" value="{{ $Popage->RACE }}">
                                             
                                              </td>
                                              <td>
                                            
                                              <input class="SPRB_CD" type="text" id="SPRB_CD" name="SPRB_CD[]" value="{{ $Popage->SPRB_CD }}">
                                              </td>
                                              <td> <select type="time" id="OutTime" name="OutTime[]" value="{{Request::old('OutTime')}}">
                                                      <option value="--">--</option>
                                                      <?php for($i = 0; $i <= 23; $i++): ?>
                                                      <option value="<?= $i; ?>"><?= date("H", strtotime("$i:00")); ?></option>
                                                      <?php endfor; ?>
                                                      </select>
                                                      <select type="time" id="OutTime" name="OutTime[]" value="{{Request::old('OutTime')}}">
                                                      <option value="--">--</option>
                                                      <?php for($i = 0; $i <= 59; $i++): ?>
                                                      <option value="<?= $i; ?>"><?= date("i", strtotime("0:$i")); ?></option>
                                                      <?php endfor; ?>
                                                      </select>
                                                      </td>
                                               <td> <select type="time" id="InTime" name="InTime[]" value="{{Request::old('InTime')}}">
                                                     <option value="--">--</option>
                                                      <?php for($i = 0; $i <= 23; $i++): ?>
                                                      <option value="<?= $i; ?>"><?= date("H", strtotime("$i:00")); ?></option>
                                                      <?php endfor; ?>
                                                      </select>
                                                      <select type="time" id="OutTime" name="OutTime[]" value="{{Request::old('OutTime')}}">
                                                      <option value="--">--</option>
                                                      <?php for($i = 0; $i <= 59; $i++): ?>
                                                      <option value="<?= $i; ?>"><?= date("i", strtotime("0:$i")); ?></option>
                                                      <?php endfor; ?>
                                                      </select></td>   
                                              <td><select type="text" id="Reason2" name="Reason2" value="{{Request::old('Reason')}}">
                                                    <option value="{{ Request::old('Reason') }}">--</option>
                                                     <option value="Structure Program">Structure Program</option>
                                                    <option value="Untructure Program">Unstructure Program</option>
                                                    <option value="Refused">Refused</option>
                                                    <option value="Court">Court</option>
                                                    <option value="Released">Released</option>
                                                    <option value="D/L">D/L</option>
                                                    <option value="Fac L/D">Fac L/D</option>
                                                    <option value="Medical">Medical</option>
                                                    <option value="Interview">Interview</option>
                                                    <option value="Rehoused">Rehoused</option>
                                                    <option value="415">415</option>
                                                    <option value="NIC">NIC</option>
                                                    <option value="Short Staffing">Short Staffing</option>
                                                  </select></td>
                                                  <!-- <td><input type="text" class="form-control" id="Comment" name="Comment" placeholder="Comment"></td> -->
                                              <td><input type="text" id="Comment" name="Comment[]" placeholder="Comment" value="{{Request::old('Comment')}}""></td>
                                             
                                              <td>

                                           
                                                  
                                                  </td>             
                                              <td>
                                               <input class="HFAC" type="text" id="HFAC" name="HFAC[]" value="{{ $Popage->HFAC }}">
                                            
                                              </td>
                                              <td>
                                               <input class="HCOD_CD" type="text" id="HCOD_CD" name="HCOD_CD[]" value="{{ $Popage->HCOD_CD }}">
                                             
                                              </td>
                                                <td>
                                           
                                             
                                        <input type="checkbox" name="addchkbox" id="addchkbox" class="addchkbox" value="{{ $Popage->CEN }}"></td>
                                       
                                


                                         </form>        <! -------- end of update_log form-------------------- -->


part of my app.blade.php

$('#mark-entry>tbody').empty();
                $.each(response, function () {
                        $('#mark-entry>tbody').append('<td><input type="text" class="Date" id="Date" name="rows['+i+'][Date]" value="<?php echo $today = date("Y-m-d");  ?>"></td>' +
'<td><input type="text" class="Badge" id="Badge" name="rows['+i+'][Badge]" placeholder="Badge Number" value="{{ Auth::user()->badge }}"></td>' +
'<td><input class="CEN" type="text" id="CEN" name="rows['+i+'][CEN]" value="{{ $Popage->CEN }}"></td>' +
'<td><input class="PFN" type="text" id="PFN" name="rows['+i+'][PFN]" value="{{ $Popage->PFN }}"> </td>' +
'<td><input class="LNAM" type="text" id="LNAM" name="rows['+i+'][LNAM]" value="{{ $Popage->LNAM }}"></td>' +
'<td><input class="FNAM" type="text" id="FNAM" name="rows['+i+'][FNAM]" value="{{ $Popage->FNAM }}"></td>' +
'<td> <input class="SEX" type="text" id="SEX" name="rows['+i+'][SEX]" value="{{ $Popage->SEX }}"></td>' + 
'<td><input class="RACE" type="text" id="RACE" name="rows['+i+'][RACE]" value="{{ $Popage->RACE }}"></td>' +
'<td><input class="SPRB_CD" type="text" id="SPRB_CD" name="rows['+i+'][SPRB_CD]" value="{{ $Popage->SPRB_CD }}"></td>' +
'<td> <select type="time" id="OutTime" name="rows['+i+'][OutTime]" value="{{Request::old('OutTime')}}"><option value="--">--</option><?php for($i = 1; $i <= 24; $i++): ?><option value="<?= $i; ?>"><?= date("h.iA", strtotime("$i:00")); ?></option><?php endfor; ?> </select></td>' +
'<td><select type="time" id="InTime" name="rows['+i+'][InTime]" value="{{Request::old('InTime')}}"><option value="--">--</option><?php for($i = 1; $i <= 24; $i++): ?><option value="<?= $i; ?>"><?= date("h.iA", strtotime("$i:00")); ?></option><?php endfor; ?></select></td>' +   
'<td><select type="text" id="Reason" name="rows['+i+'][Reason]" value="{{Request::old('Reason')}}"><option value="{{ Request::old('Reason') }}">--</option><option value="Structure Program">Structure Program</option><option value="Untructure Program">Unstructure Program</option><option value="Refused">Refused</option><option value="Court">Court</option><option value="Released">Released</option><option value="D/L">D/L</option><option value="Fac L/D">Fac L/D</option><option value="Medical">Medical</option><option value="Interview">Interview</option><option value="Rehoused">Rehoused</option><option value="415">415</option><option value="NIC">NIC</option><option value="Short Staffing">Short Staffing</option></select></td>
'<td><input type="text" id="Comment" name="rows['+i+'][Comment]" placeholder="Comment" value="{{Request::old('Comment')}}""></td>' +
'<td><input class="FAC" type="text" id="FAC" name="rows['+i+'][FAC]" value="{{ $FAC->HFAC_NAME }}"> </td>' +                                                          
'<td><input class="HFAC" type="text" id="HFAC" name="rows['+i+'][HFAC]" value="{{ $Popage->HFAC }}"></td>' +
'<td><input class="HCOD_CD" type="text" id="HCOD_CD" name="rows['+i+'][HCOD_CD]" value="{{ $Popage->HCOD_CD }}"></td>'

            );
            no++;
            i++;
    });


ahuggins's avatar

What about just this:


foreach ($inputs as $input)
            {

                StudentMark::create(array(
                    'course_id'=>Input::get('course'),
                    'semi_written_test'=>$input['written'],
                    'semi_reading_test'=>$input['read'],
                    'semi_class_activity'=>$input['activity'],
                    'semi_homework'=>$input['homework'],
                    'semi_total'=>$input['total'],
                    'student_id'=>$input['studentId'],
                ));
            }
StudentMark::create($marks);


It's not the best, since you are making a full roundtrip request for each $input....but it should at least create it in the db. Then you can work toward a better solution, that doesn't make as many requests.

Please or to participate in this conversation.