How to record several laravel php records

0

Well I'm making an attendance list and I want to record of all the people at once. I spent all day without solving it.

Sight code

@extends('layouts.docen')
@section ('contenido')
<div class="row">
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
        <h3>Nueva Asistencia</h3>
        @if (count($errors)>0)
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                <li>{{$error}}</li>
                @endforeach
            </ul>
        </div>
        @endif
</div>
</div>


    {!!Form::open(array('url'=>'docente/asistencia/{id}','method'=>'POST','autocomplete'=>'off'))!!}
    {{Form::token()}}



    <div class="col-lg-2 col-md-4 col-sm-4 col-xs-4 form-group">
            <div class="form-group">
            <label for="sesion">Sesion</label>
            <input type="number" name="sesion" class="form-control" placeholder="Número ...">
            </div>
    </div>
    <div class="col-lg-3 col-md-4 col-sm-4 col-xs-4 form-group">
            <div class="form-group">
            <label for="fecha">Fecha</label>
            <input type="date" name="fecha" class="form-control" placeholder="Fecha ...">
            </div>
    </div>
    <div class="col-lg-12 col-md-12 col-xs-12">
        <div class="table-reponsive">
            <table class="table table-striped table-bordered table-condensed table-hover">
                <thead>
                    <th>Alumno</th>
                    <th>Asistencia</th>
                </thead>
                @foreach($registros as $reg)

                <input type="hidden" name="idCursoProg" value="{{$reg->IdCursoProg}}">


                <tr><input type="hidden" name="IdRegistro" value="{{$reg->IdRegistro}}">
                    <td>{{$reg->nombres}} {{$reg->apellidos_pat}} {{$reg->apellidos_mat}}</td>
                    <td>
                        <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 form-group">
                            <div class="form-group">
                                <select name="asistencia" class="form-control">
                                        <option value="A" >Asistió</option>
                                        <option value="T" >Tarde</option>
                                        <option value="F">Falta</option>
                                </select>
                                </div>
                        </div>
                    </td>
                </tr>

    @endforeach 
            </table>
        </div>

    </div>
    <div class="col-lg-12 col-md-4 col-sm-2 col-xs-12 form-group form-group">
        <button class="btn btn-primary" name="insertar" type="submit">Guardar</button>
        <button class="btn btn-warning" type="reset">Limpiar</button>

        {!!Form::close()!!}
    </div>
@endsection

Controller

  public function store(AlumnoFormRequest $request)
{

            $asistencia=new Asistencia;
            $asistencia->sesion=$request->get('sesion');
            $asistencia->fecha=$request->get('fecha');
            $asistencia->asistencia=$request->get('asistencia');
            $asistencia->idCursoProg=$request->get('idCursoProg');
            $asistencia->IdRegistro=$request->get('IdRegistro');
            $asistencia->save();
    return Redirect::to('docente/asistencia');
}

    
asked by Anderson Jamanca 29.11.2017 в 06:52
source

1 answer

0

In your form all the inputs that have the $reg->IdCursoPro g, $reg->IdRegistro and the select , are called equal, that is, idCursoProg , IdRegistro and support . This means that the server only reaches the last values of each of them (even if they are a hundred times).

To solve this you have to give an index to each of the elements: idCursoProg becomes idCursoProg[] ; IdRegistro becomes IdRegistro[] ; asistencia becomes asistencia[] .

@extends('layouts.docen')
@section ('contenido')
    <div class="row">
        <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
            <h3>Nueva Asistencia</h3>
            @if (count($errors)>0)
                <div class="alert alert-danger">
                    <ul>
                        @foreach ($errors->all() as $error)
                            <li>{{$error}}</li>
                        @endforeach
                    </ul>
                </div>
            @endif
        </div>
    </div>
    {!!Form::open(array('url'=>'docente/asistencia/{id}','method'=>'POST','autocomplete'=>'off'))!!}
    {{Form::token()}}
    <div class="col-lg-2 col-md-4 col-sm-4 col-xs-4 form-group">
        <div class="form-group">
            <label for="sesion">Sesion</label>
            <input type="number" name="sesion" class="form-control" placeholder="Número ...">
        </div>
    </div>
    <div class="col-lg-3 col-md-4 col-sm-4 col-xs-4 form-group">
        <div class="form-group">
            <label for="fecha">Fecha</label>
            <input type="date" name="fecha" class="form-control" placeholder="Fecha ...">
        </div>
    </div>
    <div class="col-lg-12 col-md-12 col-xs-12">
        <div class="table-reponsive">
            <table class="table table-striped table-bordered table-condensed table-hover">
                <thead>
                <th>Alumno</th>
                <th>Asistencia</th>
                </thead>
                @foreach($registros as $reg)
                    <input type="hidden" name="idCursoProg[]" value="{{$reg->IdCursoProg}}">
                    <tr><input type="hidden" name="IdRegistro[]" value="{{$reg->IdRegistro}}">
                        <td>{{$reg->nombres}} {{$reg->apellidos_pat}} {{$reg->apellidos_mat}}</td>
                        <td>
                            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 form-group">
                                <div class="form-group">
                                    <select name="asistencia[]" class="form-control">
                                        <option value="A">Asistió</option>
                                        <option value="T">Tarde</option>
                                        <option value="F">Falta</option>
                                    </select>
                                </div>
                            </div>
                        </td>
                    </tr>

                @endforeach
            </table>
        </div>

    </div>
    <div class="col-lg-12 col-md-4 col-sm-2 col-xs-12 form-group form-group">
        <button class="btn btn-primary" name="insertar" type="submit">Guardar</button>
        <button class="btn btn-warning" type="reset">Limpiar</button>

        {!!Form::close()!!}
    </div>
@endsection

The server will reach you:

En $request->get('idCursoProg')
    //Entiendo que el curso es el mismo para todos y le pongo un id=2
          [
            0 => "2"
            1 => "2"
            2 => "2"
            3 => "2"
            4 => "2"
          ]
En $request->get('IdRegistro')
    //Entiendo que cada alumno tiene un id y los asigno del 1 al 5
          [
            0 => "1"
            1 => "2"
            2 => "3"
            3 => "4"
            4 => "5"
          ]
En $request->get('asistencia')
          [
            0 => "A"
            1 => "T"
            2 => "A"
            3 => "F"
            4 => "A"
          ]

And in the Controller you will have to deal with each of the elements:

public function store(AlumnoFormRequest $request)
    {
        foreach ($request->get('asistencia') as $key => $value) {
            $asistencia = new Asistencia;
            $asistencia->sesion = $request->get('sesion');
            $asistencia->fecha = $request->get('fecha');
            $asistencia->asistencia = $value;
            $asistencia->idCursoProg = $request->get('idCursoProg')[$key];
            $asistencia->IdRegistro = $request->get('IdRegistro')[$key];
            $asistencia->save();
        }

        return Redirect::to('docente/asistencia');
    }
    
answered by 29.11.2017 / 09:20
source