Sarita Sharma
Sarita Sharma

Reputation: 253

How to show selected value from database in dropdown using Laravel?

I want to show selected value from database into dropdown list on page load.

My controller index function is :

public function index()
{ 
 $country_data =DB::table('country')->select('country_id','country_name')->get();
$profile_data= DB::table('profiles')->select('*')->where('id',$user_id)->first();
return view('profile_update',compact('profile_data','country_data'));
}

Column name in database for height is :Height

My dropdown in profile_update.blade.php is

<select class="select4" name="country" id="country">
<option value="">Please Select</option>
 @foreach($country_data as $country)
<option value="{{$country->country_id}}" {{$country_data->country == $country->country_id  ? 'selected' : ''}}>{{$country->country_name}}</option>
 @endforeach</select>

Upvotes: 4

Views: 75486

Answers (4)

Tayyab Hayat
Tayyab Hayat

Reputation: 933

Well, simply if anyone still looking for this, here is the simple way to select items for dropdown from database to blade view

$users = Users::pluck('name', 'id');
$selectedID = 2;
return view('users.edit', compact('id', 'users'));

add this in the controller function before rendering the view and in the blade view, simply use this variable as foreach loop as

<select name="user_id" class="form-control" id="exampleFormControlSelect1">
    @foreach ($users as $key => $value)
    <option value="{{ $key }}" {{ ($key == $selectedID) ? 'selected' : '' }}> 
      {{ $value }} 
    </option>
    @endforeach
</select>

if you don't want to select all users from DB, you can use where condition before pluck condition as

$users = Users::where('status', 1)->pluck('name', 'id');

works with Laravel 8 and Laravel6

Upvotes: 0

Sabaoon Bedar
Sabaoon Bedar

Reputation: 3689

In order to understand it fully you will need basics of laravel (MVC), Let suppose, you have controller. In my case I made a separate table for drop down values.

My Approach --- Separate table for values of drop down, you can try different approach but my explanation was mainly focused on concept.

enter image description here


Note: PersonInfo is model, sampleType is model of my drop down values and don't forget to make a route for the controller.

ExampleController{

public funtion getValues($id){

/*
I am fetching information of a single row from the database by id and 
then passing it to the view. The $id to the function came from the 
request by your view/form. 
I also fetched the values of drop down from the separate table 
of database and passed it to the exampleView.
*/

$selectedValue=PersonInfo::findOrFail($id);
$sampleType=SampletypePicker::all(); //model for fetching all values of drop down

return view('exampleView',compact('selectedValue','sampleType));

   }
}

So, in the above controller I fetched all values and passed it to the ExampleView. Now in your View file you have to work likewise.

exampleView.blade.php add the below code


    <?php $options=$selectedValue->sample_type ?> //note take the value from the database which stored for the individual record and match it with the selected one.
    <select class="form-control" name="test">
              <option>Select Test Type</option>
    @foreach ($sampleType as $value)
             <option value="{{ $value->sample_type }}" {{ ( $value->sample_type == $options) ? 'selected' : '' }}>
                {{ $value->sample_type }}
              </option>
     @endforeach
    </select>

It is one of the best approach when you want to add dynamic values to the drop down. I mean if you want to add more values to the select tag options then this is the best approach.


Another Approach - take the idea

      <?php $months = array("Jan", "Feb", "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");   ?>

        <?php $options=$patient_data->month ?>

                @if($patient_data->month)
                <select id="expiry_month" name="month" class="form-control-sm">
@foreach($months as $month)
                     <option value="{{$month}}" {{($month==$options)? 'selected':'' }}>{{$month}}</option>
@endforeach
               </select>

            @endif

                <span class="select-icon"><i class="zmdi zmdi-chevron-down"></i></span>
            </div>

OUTPUT of ABOVE CODE


enter image description here

Upvotes: 1

Adam Wądołkowski
Adam Wądołkowski

Reputation: 322

@Sarita Sharma show the error(s). Maybe then anyone help you to resolve this problem. Show data in colections in controler - use dd e.g.

dd($country_data);
dd($profile_data);

Do you want to display the country in the view with the appropriate Height value from profile_data?

Ps. How to put the code, please use the formatting code - put the code in `` and use camelCase in value name (maintaining good PSR-1 practice) - it is easier to read code.

Upvotes: 0

M&#225;rcio Winicius
M&#225;rcio Winicius

Reputation: 371

This is a example of how I do this:

<select class="js-states browser-default select2" name="shopping_id" required id="shopping_id">
        <option value="option_select" disabled selected>Shoppings</option>
        @foreach($shoppings as $shopping)
            <option value="{{ $shopping->id }}" {{$company->shopping_id == $shopping->id  ? 'selected' : ''}}>{{ $shopping->fantasyname}}</option>
        @endforeach
    </select>

Upvotes: 22

Related Questions