Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel - Store multiple checkbox form values in database

So I've got this code

View:

<div id="checkboxes">
                         <input type="checkbox" class="checkbox" name="services" value="{{ $service->id }}" id="{{ $service->id }}" />
                         <label class="whatever" for="{{ $service->id }}"><p class="serv-text"> {{ $service->service_name }} + ${{ $service->price }} </p></label>
                             </div>

Controller:

  public function store(Request $request)
    {
       orders::create(Request::all());
        return 'test';
    }

Model:

class orders extends Model
{
    protected $fillable = [
    'category', 
    'services',
    'total_price',
    'user_id',
    'status',
    'user_id'];
}

When I try to submit the form, in the database at services there is only one number even if I checked multiple boxes when I submitted the form. I've tried to find on google a solution but nothing.

like image 678
Grosu Dumitru Avatar asked Sep 21 '18 15:09

Grosu Dumitru


People also ask

How can we store multiple checkbox values in database using ASP NET?

Place your checkboxes in side a panel. Then looping through the controls of type checkbox get the chcked checkbox value as comma separated string. After getting the value as comma separated you can insert it in database.

How do I insert multiple checkboxes?

To insert more than one checkbox, go to the Developer Tab –> Controls –> Insert –> Form Controls –> Check Box. Now when you click anywhere in the worksheet, it will insert a new checkbox. You can repeat the same process to insert multiple checkboxes in Excel.


1 Answers

If you have multiple checkboxes like this:

<input type="checkbox" name="services" value="1"/>
<input type="checkbox" name="services" value="2"/>
<input type="checkbox" name="services" value="3"/>

It will send's only one value to server, cause name must be unique. Workaround is to use array inputs:

<input type="checkbox" name="services[]" value="1"/>
<input type="checkbox" name="services[]" value="2"/>
<input type="checkbox" name="services[]" value="3"/>

Then you can grab that input in controller and do something like this:

$services = $request->input('services');
foreach($services as $service){
 orders::create($service);
}

Validation of arrays in Laravel:

https://laravel.com/docs/5.7/validation#validating-arrays

More about input arrays:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#Handling_multiple_checkboxes

How to get form input array into PHP array

like image 123
Lukáš Irsák Avatar answered Oct 07 '22 03:10

Lukáš Irsák