Postingan lainnya
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');
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
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:
- Kesalahan pada Route:
Pastikan route /kirimsubindikator di web.php mengarah ke method kirimSubIndikator di CrudController.
- Kesalahan pada Validasi:
Periksa kembali validasi pada method kirimSubIndikator. Pastikan nama field pada validate dan create sama.
- Kesalahan pada Model:
Pastikan field pada model SubIndikator sesuai dengan nama field pada database.
- 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.