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

sunrise's avatar

How to show old data of `select` element in Laravel?

How to show old data of select element in Laravel?

Data can be shown in input like this:

<input id="name" name="name" class="form-control" type="text" value="{{ old('name', $user->name) }}">

when the element is select,how to show the old data?

    <select class="form-control" name="gender">
        <option value="male">male</option>
        <option value="female">female</option>
    </select>
0 likes
11 replies
topvillas's avatar
Level 46

There isn't a very elegant way to do it.

You'll need to put a Blade if statement in there somewhere.

<option value="male" @if(old('gender') == 'male')selected@endif>male</option>

Unless you use LaravelCollective's HTML package.

4 likes
27ksandip's avatar

Easy way to do this First get the old value $oldvalue = old('project_year')

Than Check the condition is empty or not

@if(!empty($oldvalue)) {{ old('project_year') }} @else Select Year @endif

akhil_raj_dev's avatar

You can simply use ternary operator as below for comparing both old value and database value. Here $name corresponds to the datatbase value which you have to send to blade page.

<select class="form-control" name="gender">
        <option value="male" {{ old('name',$name)=='male' ? 'selected' : ''  }}>male</option>
        <option value="female"  {{ old('name',$name)=='female' ? 'selected' : ''  }}>female</option>
    </select>
2 likes
shafayet.me's avatar
<select class="form-control" name="gender">
    <option value="male" @if (old('gender') == 'male') selected="selected" @endif>male</option>
    <option value="female" @if (old('gender') == 'female') selected="selected" @endif>female</option>
</select>
1 like
lara170452's avatar

if the options are fetched through ajax and after validation(not ajax), it doesn't show old value. please help.

VIEW


<select class="form-control @error('boardingPoint') is-invalid @enderror" 
               id="boardingPoint" 
               name="boardingPoint" >
         <option  class="disabled" selected disabled>
                    Select Boarding Point
         </option>
 </select>

CONTROLLER



public function getPoints (Request $request)
    {
        /**
         * Get the boarding points for selected city.
         *
         *
         */

        static $html;

        $city = $request->validate([
            'city' => ['numeric' , 'required']
        ]);

        if($city)
        {
            $html = '<option value="" class="disabled" selected disabled>'
                            .'Select Boarding Point'.'</option>';
            $points = Point::where('city_id', $city)->get();

            foreach ($points as $point)
            {
                $html  .='<option value="'.$point->id.'">'.$point->name.'</option>';
            }
        }

        return response()->json(['html' => $html]);
    }

AJAX


        $.ajaxSetup({
           headers: {
                'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
            }
        });

        $('#boardingCity').change(function () {

            let boardingCity = $(this).val();

            $.ajax({
                url:'/ajax/points',
                method:'post',
                data: {
                    city: boardingCity,
                },
                beforeSend: function(){
                    // Show loading spinner
                    $("#loadingSpinner").show();
                },
                success:function (data)
                {
                    $('#boardingPoint').html(data.html);
                },
                complete:function(data){
                    // Hide loading spinner
                    $("#loadingSpinner").hide();
                }
            });
        })

Please or to participate in this conversation.