Search code examples
phpajaxlaravel

Need to create a drop down list in laravel, and insert the results in a new database


I am new to laravel, I have a two tables: users, selected_users both contains id, name. I wanted to create a drop down list that is populated from users, when selecting a user name it will insert the user's name beside the drop down menu. When I press submit the name should be saved to the selected_user table.

Can please someone help with this code how to write it in the view and controller.


Solution

  • I'm not quiet sure what you really want to achieve but try the code below;

    userview.blade.php

      <div class="container">
       @if(session('success'))
          <h1>{{session('success')}}</h1>
       @endif
       <form method="POST" action="{{route('save.selected-user')}}">
       {{ csrf_field() }}
       <div class="form-group row">    
           <div class="col-sm-8">
           <select class="form-control" id="selectUser" name="user_selected" required focus>
        <option value="" disabled selected>Please select user</option>        
        @foreach($users as $user)
        <option value="{{$user->id}}">{{ $user->name }}</option>
        @endforeach
      </select>
      </div>
    <label class="col-sm-4 col-form-label"  id="displayUser">Show selected User 
      here</label>
    </div>
     <input type="submit" value="Save">
    

    <script type="text/javascript">
      var mytextbox = document.getElementById('displayUser');
      var mydropdown = document.getElementById('selectUser');
      mydropdown.onchange = function(){
          mytextbox.value = mytextbox.value  + this.value; //to appened
         mytextbox.innerHTML = this.value;
         }
      </script>
    

    TestController.php (make sure you have User model and SelectedUser model)

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\User;
    use App\SelectedUser;
    
    class TestController extends Controller
    {
    
      public function populateUsers()
      {
        $users = User::all();
        return view('test.userview', compact('users'));
      }
    
      public function saveUser(Request $rq)
      {
        $selectedUser = new SelectedUser;
        $selectedUser->name = $rq->user_selected;
        $selectedUser->save();
    
        return redirect()->back()->with('success', 'Selected Username added successfuly');
      }
    }
    

    WEB.php

    Route::get('/selected-user', 'TestController@populateUsers');
    Route::POST('/selected-user', 'TestController@saveUser')->name('save.selected-user');
    

    Please let me know if it works