data tidak masuk ke dalam database

jadi saya itu bikin website pakai php, laravel 10 dan pakai template stisla. databasenya phpmyadmin. di database itu tabelnya subindikator , fieldnya ada id_sub_indikator, area_intervensi, indikator, nama_sub_indikator, persentase_sub_indikator, kriteria, dan id_indikator yang disini dia FK. tapi pas klik tombol kirim, data gak tersimpan dan halamannya malah ke /kirimsubindikator. seharusnya ke /edit dong ya karena udah di direct. kesalahannya dimana ya ini? makasii

//addsubindikator.blade.php

@extends('layouts.master')
@section('content')
<div class="row">
    <div class="col-12">
      <div class="card">
        <div class="card-header">
          <h4>Tambah Sub Indikator</h4>
        </div>
        <div class="card-body">
            <form method="POST" action="/kirimsubindikator">
                @csrf
          <div class="form-group row mb-4">
            <label class="col-form-label text-md-right col-12 col-md-3 col-lg-3">Area Intervensi</label>
            <div class="col-sm-12 col-md-7">
              <select class="form-control selectric" name="area_intervensi">
                <option>Perencanaan dan Penganggaran APBD</option>
                <option>Pengadaan Barang dan Jasa</option>
                <option>Perizinan</option>
                <option>Pengawasan APIP</option>
                <option>Manajemen ASN</option>
                <option>Optimalisasi Pajak Daerah</option>
                <option>Pengelolaan BMD</option>
              </select>
            </div>
          </div>
          <div class="form-group row mb-4">
            <label class="col-form-label text-md-right col-12 col-md-3 col-lg-3">Indikator</label>
            <div class="col-sm-12 col-md-7">
              <select class="form-control selectric" name="indikator">
                {{-- tambahkan dari indikator yang telah diinputkan --}}
                @foreach ($indikators as $indikator)
                    <option>{{ $indikator->nama_indikator }}</option>
                @endforeach
              </select>
            </div>
          </div>
          <div class="form-group row mb-4">
            <label class="col-form-label text-md-right col-12 col-md-3 col-lg-3">Nama Sub Indikator</label>
            <div class="col-sm-12 col-md-7">
              <input type="text" name="nama_sub_indikator" class="form-control">
            </div>
          </div>
          <div class="form-group row mb-4">
            <label class="col-form-label text-md-right col-12 col-md-3 col-lg-3">Kriteria</label>
            <div class="col-sm-12 col-md-7">
              <textarea type="text" name="kriteria" class="form-control"></textarea>
            </div>
          </div>
          <div class="form-group row mb-4">
            <label class="col-form-label text-md-right col-12 col-md-3 col-lg-3">Persentase Sub Indikator</label>
            <div class="col-sm-12 col-md-7">
              <input type="text" name="persentase_sub_indikator" class="form-control">
            </div>
          </div>
          <div class="form-group row mb-4">
            <label class="col-form-label text-md-right col-12 col-md-3 col-lg-3"></label>
            <div class="col-sm-12 col-md-7">
                <button type="submit" class="btn btn-primary">Kirim</button>
            </div>
          </div>
        </form>
        </div>
      </div>
    </div>
  </div>
@endsection

ini controllernya (CrudController.php)

public function kirimSubIndikator(Request $request)
    {
        // Validasi input form jika diperlukan
        $request->validate([
            'area_intervensi' => 'required',
            'indikator' => 'required', // Sesuaikan dengan nama field yang sesuai
            'nama_sub_indikator' => 'required',
            'kriteria' => 'required',
            'persentase_sub_indikator' => 'required|numeric',
        ]);

        // Simpan data ke database menggunakan model
        SubIndikator::create([
            'area_intervensi' => $request->input('area_intervensi'),
            'indikator' => $request->input('indikator'),
            'nama_sub_indikator' => $request->input('nama_sub_indikator'),
            'kriteria' => $request->input('kriteria'),
            'persentase_sub_indikator' => $request->input('persentase_sub_indikator'),
        ]);

        // Redirect atau lakukan hal lain setelah menyimpan data
        return redirect('/edit')->with('success', 'Sub Indikator berhasil ditambahkan');

    }

ini modelnya (SubIndikator.php)

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class SubIndikator extends Model
{
    use HasFactory;
    protected $fillable = [
        'area_intervensi',
        'indikator',
        'nama_sub_indikator',
        'kriteria',
        'persentase_sub_indikator',
    ];

    // Jika Anda memiliki hubungan dengan model Indikator, Anda dapat mendefinisikannya di sini
    public function indikator()
    {
        return $this->belongsTo(Indikator::class, 'indikator');
    }
}


dan ini routenya (yg di web.php)

Route::post('/kirimsubindikator', 'App\Http\Controllers\CrudController@kirimSubIndikator');
avatar aalikseu
@aalikseu

1 Kontribusi 0 Poin

Diperbarui 8 bulan yang lalu

Tanggapan

untuk route nya coba dilengkapi dengan route /edit nya juga, biar kita tau hirarki route nya seperti apa

2 Jawaban:

kalo bisa untuk route nya itu dikasih name ya, agar saat di blade itu bisa ditulis seperti ini action="{{ route('nama-route-nya') }}", untuk namanya menyesuaikan yang kamu mau..

begitupun efeknya ini bisa diimplementasikan di controller, jadi kamu bisa pake redirect()->route('nama-route-nya')

karena kalo kamu sudah naming semua route yg kamu punya, itu memudahkan debugging nya nanti

referensi Laravel - HTTP Redirects

avatar aldesrahim
@aldesrahim

1 Kontribusi 2 Poin

Dipost 9 bulan yang lalu

Tanggapan

terima kasih atas jawabannya bang, tapi kurang paham maksudnya bang, di web.php itu udah ada route utk edit juga kok bang Route::get('/edit', 'App\Http\Controllers\CrudController@index'); Route::get('/edit/addindikator', 'App\Http\Controllers\CrudController@addindikator'); Route::get('/edit/addsubindikator', 'App\Http\Controllers\CrudController@addsubindikator'); Route::post('/kirimindikator', 'App\Http\Controllers\CrudController@kirimIndikator'); Route::post('/kirimsubindikator', 'App\Http\Controllers\CrudController@kirimSubIndikator');

Kesalahan pada Laravel: Data tidak masuk ke database Berdasarkan informasi yang Anda berikan, berikut beberapa kemungkinan penyebab data tidak masuk ke database:

  1. Kesalahan pada Route:

Pastikan route /kirimsubindikator di web.php mengarah ke method kirimSubIndikator di CrudController.

  1. Kesalahan pada Validasi:

Periksa kembali validasi pada method kirimSubIndikator. Pastikan nama field pada validate dan create sama.

  1. Kesalahan pada Model:

Pastikan field pada model SubIndikator sesuai dengan nama field pada database.

  1. Kesalahan pada Input:

Pastikan nama field pada form input sama dengan nama field yang didefinisikan pada controller dan model.

Langkah-langkah untuk debugging:

Periksa log Laravel untuk melihat error yang terjadi. Gunakan dd() pada method kirimSubIndikator untuk melihat nilai input dan data yang akan disimpan. Pastikan koneksi database Laravel sudah benar. Tips:

Gunakan nama field yang konsisten dan mudah dimengerti. Gunakan validasi untuk memastikan input data valid. Gunakan dd() untuk debugging dan melihat nilai variabel. Pastikan model Eloquent terhubung dengan tabel database yang benar. Saran:

Coba ubah nama route menjadi /tambahsubindikator agar lebih mudah dipahami. Gunakan helper form Laravel untuk membuat form input dengan mudah.

avatar adamajalah27
@adamajalah27

119 Kontribusi 40 Poin

Dipost 9 bulan yang lalu

Login untuk ikut Jawaban