how making many submit button in one page laravel 8

Viewed 39

I have several buttons to insert data into the database, but only one command works, while the others don't work, what should I do, I will give an example of the data I created

this is my controller :

public function store(Request $request)
    {
        // 
        $days = $request->hari;
        $hours = $request->jam;
        $minutes = $request->menit;
        $model = new Q_Topic_User;
        $model->status = $request->status;
        $model->topic_id = $request->topic_id;
        $model->timer = Carbon::now()->addDays($days)->addHours($hours)->addMinute($minutes);
        $topik = $request->topic_id;
        $model->user_create = auth()->id();
        // dd($request->all());
        $model->save();
               
        return redirect('qanswers/'. $topik);
    }

    public function storeAns(Request $request)
    {
        $modellama = Q_Answer::where('user_create', '=', $request->kode_user)
        ->Where('topic_id', '=', $request->topic_id)
        ->Where('question_id', '=', $request->question_id);

        $a = $request->user_answer;
        $b = $request->answer;

        if ($a === $b){
            $nilai = "1";
        }
        else{
            $nilai = "0";
        }

        if ($modellama >= "1"){
            $modellama->delete();
        }

        // dd($request->all());
        $model = new Q_Answer;
        $model->topic_id = $request->topic_id;
        $model->question_id = $request->question_id;
        $model->user_answer = $request->user_answer;
        $model->answer = $request->answer;
        $model->hasil = $nilai;
        $model->user_create = auth()->id();
        $topik = $request->topic_id;
            
        $model->save();
                
        return redirect('qanswers/'. $topik);
    }
public function storeTot(Request $request)
    {
        $tot_nilai = Q_Answer::select(DB::raw("CAST(SUM(hasil) as int) as tot_nilai"))
        ->Where('topic_id', '=', $request->topic_idi)
        ->Where('user_create', '=', auth()->id())
        ->pluck('tot_nilai');

        // dd($tot_nilai);

        $tot_soal = Q_Question::select(DB::raw("CAST(COUNT(topic_id) as int) as tot_soal"))
        ->Where('topic_id', '=', $request->topic_idi)
        ->pluck('tot_soal');

        dd($request->all());
        $model = new Q_Answer_Tot;
        $model->topic_id = $request->topic_idi;
        $model->totalsoal = $tot_soal;
        $model->totalnilai = $tot_nilai;
        $model->user_create = auth()->id();
        
        // dd($request->all());
        $model->save();
        $topik = $request->topic_id;
                
        return redirect('qanswers/'. $topik);
    }

blade :

<form method="POST" action="{{ url('qanswers') }}"
                                        enctype="multipart/form-data">
                                        @csrf
                                        @foreach ($datas as $d_value)
<button type="submit" class="btn btn-sm bg-success">Kirim data</button>
                                                @endforeach
                                            </form>

<form method="POST" action="{{ url('qanswers.storeAns') }}"
                                        enctype="multipart/form-data">
                                        @csrf
                                        @foreach ($questionss as $q_value)
<button type="submit" class="btn btn-sm bg-success">Kirim Pilihan Pertanyaan</button>
                                                @endforeach
                                            </form>

<form method="POST" action="{{ url('qanswers.storeTot') }}"
                                        enctype="multipart/form-data">
                                        @csrf
                                        @foreach ($questionss as $t_value)
<button type="submit" class="btn btn-sm bg-success">Kirim Pilihan Peserta</button>
                                                @endforeach
                                            </form>

my web.php :

Route::resource('/qanswers', Q_AnswersController::class);
Route::post('/storeAns',[Q_AnswersController::class, 'storeAns'])->name('storeAns');
Route::post('/storeTot',[Q_AnswersController::class, 'storeTot'])->name('storeTot');

i can save data in store but i can save data using storeAns and storeTot. I dont find error in laravel log but i can see my data using dd($request->all()); can u help me?

1 Answers

Its good practice to give each form an unique id. With multiple forms and buttons, I would specify the form for the button. And you need to use value to figure out which button was pressed, especially when you are going to the same url in more than one form.

<form method="POST" id="answers" action="{{ url('qanswers') }}"
   enctype="multipart/form-data">
   @csrf
   @foreach ($datas as $d_value)
     <button type="submit" class="btn btn-sm bg-success" value="form1">Kirim data</button>
   @endforeach
</form>

<form method="POST" id="storeans1" action="{{ url('qanswers.storeAns') }}"
   enctype="multipart/form-data">
   @csrf
   @foreach ($questionss as $q_value)
   <button type="submit" class="btn btn-sm bg-success" value="form2">Kirim Pilihan Pertanyaan</button>
   @endforeach
</form>

<form method="POST" id="storeans2" action="{{ url('qanswers.storeAns') }}"
   enctype="multipart/form-data">
   @csrf
   @foreach ($questionss as $q_value)
   <button type="submit" class="btn btn-sm bg-success" value="form3">Kirim Pilihan Pertanyaan</button>
   @endforeach
</form>

I have shown the value with formx. SInce you are creating many buttons for each form, each should have an unique value such as

form1btn1
form1btn2
form1btn3
Related