Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

itrabbi24's avatar

Checkbox Array data Insert Problem

I want to insert data to the checkbox to array to the database. insert successfully but have a problem with a table row.

I want to do when I select 2 check database insert 2 rows when I check 1 checkbox database create 1 row.

but now I check 1 or 2 checkboxes but create 1row on how to solve that.

Entry Damage Product Details

        <form role="form" name="newTimesheet" action="{{ url('damage/entry-damage-post-success') }}" method="POST">
            <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

            <div class="form-group">
                <label for="text">Product ID</label>
                <h4>{{ $ProductID }}</h4>
            </div>
            <div class="form-group">
                <label for="text">Product Name</label>
                <h4>{{$item->ProductName}}</h4>
            </div>


            <div class="form-group">
                <label for="text">Parts Name</label>
                <div class="checkbox checkbox-success">
                    @foreach ($PartsName as $row)
                    <div class="checkbox">
                        <input id="checkbox{{ $loop->iteration }}" name='PartsNameID[]' value="{{$row->PartsName}}" type="checkbox">
                        <label for="checkbox{{ $loop->iteration }}">
                            {{$row->PartsName}} <input type="Parts" name="reused_parts_id[]" value="" placeholder="Parts ID">
                        </label>
                    </div>
                    @endforeach
                </div>
            </div>

            <input type="hidden" name="ProductName" value="{{$item->ProductName}}">
            <input type="hidden" name="ProductID" value="{{ $ProductID }}">
            <input type="hidden" name="input_user" value="{{ Auth::user()->user_id }}">
            <input type="hidden" name="input_date"
                value="<?php date_default_timezone_set('Asia/Dhaka'); $today=date("Y-m-d"); echo $today;?>">
            <input type="hidden" name="input_time"
                value="<?php date_default_timezone_set("Asia/Dhaka");echo "" . date("h:i A");?>">


            <button type="submit" class="btn btn-success waves-effect waves-light">Submit</button>
        </form>
    </div>
</div>
<!-- end col -->
//data insert page 
public function entryDamagePostSuccess(Request $request)
{
        $data = array();
        $data['product_id'] = $request->ProductID;
        $data['product_type'] = $request->ProductName;
        $data['reused_parts'] =  implode(",", $request->PartsNameID);
        $data['reused_parts_id'] = $this->slug_generator(implode(",", $request->reused_parts_id));

        
        $data['input_user'] = $request->input_user;
        $data['input_date'] = $request->input_date;
        $data['input_time'] = $request->input_time;

        DB::table('damage_tbl')->insert($data);

    echo "<prev>";
    print_r($data);
                
    // return view('Damage-Product.entry-damage-product');
}

public function slug_generator($string)
{
	$string = str_replace(' ', '-', $string);
	$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string);
	return strtolower(preg_replace('/-+/', '-', $string));
}

Screenshot Link

https://imgur.com/a/PH0p8JN

Array ( [product_id] => 1452 [product_type] => Laptop [reused_parts] => Hard Disk,Keyboard [reused_parts_id] => 1238909 [input_user] => it_rabbi [input_date] => 2020-10-03 [input_time] => 11:59 AM )

0 likes
5 replies
laracoft's avatar

@itrabbi24

Must you have the checkbox? How about if there is value, means checked, no value means unchecked.

Storing as JSON can be a much easier option for your case.

@foreach ($PartsName as $row)
<div class="checkbox">
        {{$row->PartsName}} <input type="Parts" name="part[{{$row->PartsName}}]" value="" placeholder="Parts ID">
</div>
@endforeach
$data["reused_parts"] = json_encode($request->reused_parts);
1 like
itrabbi24's avatar

if i use

$data["reused_parts"] = implode($request->PartsNameID);

so database insert like that

Hard DiskKeyboard

and if i use

$data["reused_parts"] = json_encode($request->reused_parts);

insert like this

["Hard Disk","Keyboard"]

laracoft's avatar

@itrabbi24

I'm suggesting that you change the form and how you save to the database.

  1. See my earlier code, I removed the checkbox. Is that OK? If no part ID, means not checked.
  2. Database no need reused_parts_id anymore, just store everything in reused_parts

Ok?

laracoft's avatar

@itrabbi24

  1. Yes, JSON will create ["Hard Disk","Keyboard"]

  2. To turn it back to array, use json_decode($reused_parts, true)

  3. You can test json_decode('["Hard Disk","Keyboard"]', true)

Please or to participate in this conversation.