0

I have some checkboxes. How to make it so that I can enter several values ​​into a cell in the database. For example, the user selected Math and Language. registration.blade.php:

@extends('layouts.app')
@section('title-block')
    Регистрация
@endsection

@section('content')

    <div class="container">
        <h1 align="center">
{{--            <a href="index.html"><img src="img/logo.jpg" alt="logo" class="home"></a>--}}
            Register
        </h1>
    </div>
    <hr>
    <div class="container" align="center">
        <form name="register" method="POST" action="{{route('user.registration')}}">
            @csrf
            <input class="text-input" type="text" placeholder="Enter your surname" name="surname" required>
            <input class="text-input" type="text" placeholder="Enter your name" name="name" required><br>

            <input class="text-input" type="text" placeholder="Enter your number" name="number" required><br>

            <input class="text-input" type="text" placeholder="Enter your father`s name" name="fathers_name" required>
            <input class="text-input" type="text" placeholder="Enter parent number" name="parents_number" required><br>

            <input class="text-input-full-width" id="password" name="password" type="password" required placeholder="Enter password"><br>

            <label for="studies"id="RegistrationForm"><b>Choose your studies</b></label><br>
            <div class="btn-group" role="group" aria-label="Basic checkbox toggle button group">
                <input type="checkbox" class="btn-check" id="btncheck1" autocomplete="off" name="btnstudies" value="Math">
                <label class="btn btn-outline-primary" for="btncheck1">Math</label>

                <input type="checkbox" class="btn-check" id="btncheck2" autocomplete="off" name="btnstudies" value="Language">
                <label class="btn btn-outline-primary" for="btncheck2">Language</label>

                <input type="checkbox" class="btn-check" id="btncheck3" autocomplete="off" name="btnstudies" value="Physics">
                <label class="btn btn-outline-primary" for="btncheck3">Physics</label>

    </div>
            <br>
            <label for="classes"id="RegistrationForm"><b>Classes</b></label><br>

            <div class="btn-group-vertical" role="group">

                <input type="radio" class="btn-check" name="btnradio" id="btnradio1" autocomplete="off" checked value="2">
                <label class="btn btn-outline-primary" for="btnradio1">2nd class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio2" autocomplete="off" value="3">
                <label class="btn btn-outline-primary" for="btnradio2" >3rd class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio3" autocomplete="off" value="4">
                <label class="btn btn-outline-primary" for="btnradio3">4th class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio1" autocomplete="off" value="5">
                <label class="btn btn-outline-primary" for="btnradio1">5th class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio2" autocomplete="off" value="6">
                <label class="btn btn-outline-primary" for="btnradio2">6th class</label>

                <input type="radio" class="btn-check" name="btnradio" id="btnradio3" autocomplete="off" value="7">
                <label class="btn btn-outline-primary" for="btnradio3">7th class</label>
            </div>
            <br>
            <div class="final">
                <input type="checkbox" class="check-term" id="btncheck4" autocomplete="off" required>
                <label class="check-agree" for="btncheck4">I agree with a <a href="documents/term.txt">Terms</a></label><br>
                <button class="main-button" type="submit" name="sendMe" value="1" required>Register</button><br>
{{--                <button class="main-button" required>Register</button ><br>--}}
                <br><label class="check-agree" for="btncheck5">If you have already registrated, <a href="/login"> log in</a></label>
            </div>
            <hr>

    </form>
@endsection

RegisterController.php:

<?php

namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;

class RegisterController extends Controller
{
    public function save(Request $request){
        if(Auth::check()){
            return redirect(route('user.private'));
        }

    $validateFields = $request->validate([

        'number' =>'required',
        'password' => 'required',

    ]);
        if(User::where('number',$request['number'])->exists()){
            return redirect(route('user.registration'))->withErrors([
                'number' => 'Такой пользователь уже зарегистрирован'
            ]);
        }
    $user = User::create([

        'password' => $request['password'],
        'name' => $request['name'],
        'surname'=>$request['surname'],
        'number'=>$request['number'],
        'fathers_name'=>$request['fathers_name'],
        'parents_number'=>$request['parents_number'],
        'class' => $request['btnradio'],
        'studies' => $request['btnstudies']
    ]);

    if($user){
        Auth::login($user);

        return redirect(route('user.private'));
    }
        return redirect(route('user.login'))->withErrors([
            'formError' => 'Произошла ошибка при сохранении пользователя'
        ]);
    }
}

The marked place should contain values ​​from checkboxes enter image description here

I beginner at laravel and html. I don`t understand how I can do it. I hope you can help me

1
  • change the name to name="btnstudies[]" with brackets to receive an array of values Commented Jul 30, 2021 at 12:08

1 Answer 1

1

Add square braces to input name. In this way you will be able to get each selected inputs. eg.

// view.blade.php
<form method="POST" action="/">
    @csrf
    <input type="checkbox" name="studies[]" value="a"/>
    <input type="checkbox" name="studies[]" value="b"/>
    <input type="checkbox" name="studies[]" value="c"/>
    <input type="submit"/>
</form>
// web.php
Route::post('/', function ( Request $request ) {
    dd( $request->input('studies') ); // print array of values of selected checkboxes
});
Sign up to request clarification or add additional context in comments.

1 Comment

When I try to write to the database, it gives me an array to string conversion. How can I make an entry in my function 'create' in RegisterController?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.