HARI KE-16 PRAKERIN #16

 


Assalamualaikum wr wb

Pagi apel seperti biasa

Lanjut membuat sistem informasi manajemen prakerin

membuat table guru pembimbing 

sesuai dengan skema database kemarin kita akan menghubungkan 3 tabel yaitu tabel guru pembimbing,kelas,siswa


1.Migration

Schema::create('gurupem', function (Blueprint $table) {
            $table->id();
            $table->string('nama_guru');
            $table->unsignedBigInteger('kelas_id');
            $table->unsignedBigInteger('siswa_id');
            $table->integer('nis_siswa');
            $table->foreign('kelas_id')->references('id')->on('kelas')->onDelete('cascade')
->onUpdate('cascade');
            $table->foreign('siswa_id')->references('id')->on('siswa')->onDelete('cascade')
->onUpdate('cascade');
            $table->softDeletes();
            $table->timestamps();
        });

Kita masih menggunakan laravel eloquent relationship

gurupem <=  kelas => siswa

2.models

class Gurupem extends Model
{
    use HasFactory;
    protected $table ='gurupem';
    protected $quarded = ['id'];
    protected $fillable = ['nama_guru','siswa_id','kelas_id','nis_siswa'];
    public function siswa()
    {
        return $this->belongsTo(Siswa::class);
    }
    public function kelas()
    {
        return $this->belongsTo(Kelas::class);
    }
}

tambahkan ini pada model kelas
public function gurupem()
    {
        return $this->hasMany(Gurupem::class, 'kelas_id','id');
    }
pada model siswa
public function Gurupem()
    {
        return $this->hasMany(Gurupem::class, 'siswa_id','id');
    }


3.Controller 

public function index()
    {
        $siswa = Siswa::all();
        $kelas = Kelas::all();
        $gurupem = Gurupem::all();
        return view('guru-pembimbing.index',compact('gurupem','siswa','kelas'));
    }
public function create()
    {
        $kelas = Kelas::all();
        $siswa = Siswa::all();
        return view('guru-pembimbing.create',compact('kelas','siswa'));
    }
 public function store(Request $request)
    {
        $request->validate([
            'nama_guru' => 'required',
            'kelas_id' => 'required',
            'siswa_id' => 'required',
            'nis_siswa' => 'required',
           
        ]);

        $gurupem = new Gurupem;
        $gurupem->nama_guru = $request->nama_guru;
        $gurupem->kelas_id = $request->kelas_id;
        $gurupem->siswa_id = $request->siswa_id;
        $gurupem->nis_siswa = $request->nis_siswa;
        $gurupem->save();
        return to_route('guru-pembimbing.index')->with('success','Data Berhasil Ditambahkan');
    }
public function edit($id)
    {
        $siswa = Siswa::all();
        $kelas = Kelas::all();
        $gurupem = Gurupem::find($id);
        return view('guru-pembimbing.edit',compact('gurupem','siswa','kelas'));
    }
 public function update(Request $request, $id)
    {
       
        $request->validate([
            'nama_guru' => 'required',
            'kelas_id' => 'required',
            'siswa_id' => 'required',
            'nis_siswa' => 'required',
           
        ]);

        $gurupem = Gurupem::find($id);
        $gurupem->nama_guru = $request->nama_guru;
        $gurupem->kelas_id = $request->kelas_id;
        $gurupem->siswa_id = $request->siswa_id;
        $gurupem->nis_siswa = $request->nis_siswa;
        $gurupem->save();
        return to_route('guru-pembimbing.index')->with('success','Data Berhasil Diupdate');
    }

    public function destroy($id)
    {
        $gurupem = Gurupem::find($id);
        $gurupem->delete();
        return back()->with('danger','Data Berhasil Di hapus');
    }

4. Membuat fungsi mengambil data siswa & nis sesuai dengan kelas yg di pilih

Konsep : 

Form berisi nama guru, kelas siswa, nama siswa,nis siswa

Jika user memilih kelas maka option pada form tsbt akan memunculkan data sesuai, nama-nama siswa yang sudah terdaftar pada tabel kelas ,dan NIS akan terisi secara otomatis sesuai dengan yg ada di tabel siswa .

Fitur ini di bantu dengan Ajax & Select 2

Referensi : 

a.https://youtu.be/N5ctY9nPt9o?si=Oym9z3dKtEeE5qqa

b.https://youtu.be/66Kuv1b2_pg?si=oMvzG7ZcR6nhL5Oo

5.Blade.php

 <div class="form-group mb-3">
                <label for="">Kelas</label>
                <select name="kelas_id" id="kelas">
                    <option value="">--Pilih Kelas--</option>
                @foreach ($kelas as $kls)
                        <option value="{{ $kls->id }}">{{ $kls->kelas_jurusan_siswa }}</option>
                        @endforeach
                    </select>
            </div>
            <div class="form-group mb-3">
                <label for="">Nama Siswa</label>
                <select name="siswa_id" id="siswa">
                    <option value="">--Pilih Siswa--</option>
                        option akan muncul secara otomatis
                        berdasarkan kelas yg di pilih
                </select>
            </div>
            <div class="form-group mb-3">
                <label for="">NIS SISWA</label> --terisi otomatis sesuai dengan id
                                                    siswa
                <input type="text" id="nis_siswa" name="nis_siswa" readonly>
            </div>

6.Script

<script>
       $(function () {

            $.ajaxSetup({
                headers:{'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
            });

            // MENGAMBIL ID SIWA BERDASARKAN KELAS SISWA
            $(function(){
                $('#kelas').on('change',function(){
                    let id_kelas = $('#kelas').val();
                   
                    $.ajax({
                        type: 'POST',
                        url : "{{ route('getSiswa') }}",
                        data: {id_kelas:id_kelas},
                        cache: false,
                       
                        success:function(response){
                            $('#siswa').html(response.options);
                        },
                        error: function(data){
                            console.log('error',data)
                        }
                    })
                })
            });

            // MENGAMBIL NILAI NIS AGAR TERINPUT OTOMATIS            
            $('#siswa').on('change', function () {
                let id_siswa = $(this).val();

                 $.ajax({
                     type: 'POST',
                      url: "{{ route('getNis') }}",
                     data: {id_siswa: id_siswa},
                     cache: false,

                     success: function (response) {
                        $('#nis_siswa').val(response.nis_siswa);
                     },
                     error: function (data) {
                        console.log('error', data);
                     }
                });
            });    
        });

    </script> 

7.Controller Tambahan

public function getSiswa(Request $request){
        $id_kelas = $request->input('id_kelas');
        $siswa = Siswa::where('kelas_id',$id_kelas)->get();
        $options = "<option value=''>--Pilih Siswa--</option>"; // O
        foreach($siswa as $siswas){
           
            $options.= "<option value='$siswas->id'>$siswas->nama_siswa</option>";
        }
        return response()->json(['options' => $options]);
    }

    public function getNis(Request $request){
        $id_siswa = $request->input('id_siswa');
        $siswa = Siswa::find($id_siswa);
        return response()->json(['nis_siswa' => $siswa->nis_siswa]);
    }

8.Route 

Route::post('/getSiswa',[gurupemController::class , 'getSiswa'])->name('getSiswa');
    Route::post('/getNis',[gurupemController::class , 'getNis'])->name('getNis');








nah sesuai kan dengan data yg ada di tabel siswa


Waalaikumsalam wr wb 

Komentar

Postingan populer dari blog ini

HARI KE-13 PRAKERIN #13

PRAKERIN HARI KE 54-58