Search code examples
phplaravelcontrollerexplode

How to explode select option id and name in store method laravel controller


I want to get id and name from select option for insert in table how do I get that?

My view blade :

<th>
  <select name="itemIdSelected" id="itemNameSelected" class="form-control nameItem" >
     <option value="0" disabled="true" selected="true" >Select Item Name</option>
        @foreach($listItem as $item)
            <option value="{{ $item->item_id }}:{{$item->item_name}}">{{ $item->item_name }}</option>
        @endforeach
  </select>
</th>

My controller :

public function storeOrder(Request $request){
    $order = DB::table('order_item_master_model')->insert([
    'product_id' => $request -> itemIdSelected, // will return 15:Ben Top Biru, how do I get 15
    'customer_name' => $request -> customerName,
    'phone' => $request -> phone,
    'address' => $request -> address,
    'item_name' => $request -> itemIdSelected, // will return 15:Ben Top Biru, how do I get Ben Top Biru
    'qty' => $request -> qty,
    'uom' => $request -> uom,
    'item_price' => $request -> prc,
    'total_price' => $request -> totalPrice,
    'status' => $request -> status,
]);
    return redirect('orderProcess');

Here is my error : Illuminate\Database\QueryException SQLSTATE[01000]: Warning: 1265 Data truncated for column 'product_id' at row 1 (SQL: insert into order_item_master_model (product_id, customer_name, phone, address, item_name, qty, uom, item_price, total_price, status) values (15:Ben Top Biru, dana, 081233, purwojersey, 15:Ben Top Biru, 2, Liter, Rp. 4000, Rp. 8000, lunas))

How do I solve this error


Solution

  • Use PHP function explode() like below:

    public function storeOrder(Request $request){
    
        // Explode the ID and Name and put them in array respectively.
        $extracted = explode(":", $request -> itemIdSelected);
    
        $order = DB::table('order_item_master_model')->insert([
            'product_id' => $extracted[0], // Will return ID. 
            'customer_name' => $request -> customerName,
            'phone' => $request -> phone,
            'address' => $request -> address,
            'item_name' => $extracted[1], // Will return Name.
            'qty' => $request -> qty,
            'uom' => $request -> uom,
            'item_price' => $request -> prc,
            'total_price' => $request -> totalPrice,
            'status' => $request -> status,
        ]);
    
        return redirect('orderProcess');
    }