2016-07-19 4 views
2

Ich habe ein Projekt in Laravel 5.2 erstellt. In dieser "myform.blade.php" Seite, erstellt Formular für die Registrierung des Benutzers. Nach der Registrierung wird der aktuelle Benutzer im Tabellenformat angezeigt ("index.blade.php"). Dort habe ich zwei dynamische Buttons wie den Drop innerhalb des Tisches gegeben. Eine für Bearbeiten und andere für Bearbeiten/Anzeigen. Wenn ich auf Löschen klicke, wird die entsprechende Zeile aus der Datenbank gelöscht, indem der Primärschlüssel (employeeID) als Referenz-ID verwendet wird. Wenn ich auf die Schaltfläche Bearbeiten/Ansicht klicke, wird auf "edit.blade.php" umgeleitet. Dort habe ich das gleiche Formular wie in myform.blade.php erstellt. Wenn wir die Details bearbeiten wollen, können wir von dort aus bearbeiten. Ich kann die Daten von der Datenbank zu dem Formular, das ich in der "edit.blade.php" erstellt habe, abrufen. Aber ich weiß nicht, wie man die Daten von ihren aktualisiert, ohne die gleichen Daten wieder einzusetzen (es ist nicht möglich, weil es Integritätseinschränkungsverletzung verursacht, indem man versucht, doppelten Primärschlüssel einzuführen. Kann irgendjemand mir bitte erklären, wie man Aktualisierung durchführt) spürbar sind. Antworten.Wie aktualisiert man eine Datenbanktabelle in Laravel 5.2

"myform.blade.php" ist

@extends('app') 

@section('content') 

    <div class="templatemo-content-wrapper"> 
     <div class="container"> 
      <ol class="breadcrumb"> 
       <li><a href="{{ url("/") }}"><font color="green">Home</font></a></li> 
       <li class="active">Employee Form</li> 
      </ol> 
      <div class="row"> 
       <div class="col-md-8 col-md-offset-2"> 
        <div class="panel panel-success"> 
         <div class="panel-heading">Employee Form</div> 
         <div class="panel-body"> 
          @if (count($errors) > 0) 
           <div class="alert alert-danger"> 
            <strong>Whoops!</strong> There were some problems with your input.<br><br> 
            <ul> 
             @foreach ($errors->all() as $error) 
              <li>{{ $error }}</li> 
             @endforeach 
            </ul> 
           </div> 
          @endif 

          <form class="form-horizontal" role="form" method="POST" action="{{ url('myform/myform/') }}"> 
           <input type="hidden" name="_token" value="{{ csrf_token() }}"> 

           <div class="form-group"> 
            <label class="col-md-4 control-label">Employee ID</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="employeeID" value="{{ old('employeeID') }}" placeholder="Enter employee ID"> 
            </div> 
           </div> 


           <div class="form-group"> 
            <label class="col-md-4 control-label">E_number</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="employeeNo" value="{{ old('employeeNo') }}" placeholder="Enter employee number"> 
            </div> 
           </div> 

           <div class="form-group"> 
            <label class="col-md-4 control-label">Name</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="Cname" value="{{ old('Cname') }}" placeholder="Enter Contact Name"> 
            </div> 
           </div> 

           <div class="form-group"> 
            <label class="col-md-4 control-label">DOB</label> 
            <div class="col-md-6"> 
             <input type="date" class="form-control" name="dob" value="{{ old('dob') }}" placeholder="Enter date of birth"> 
            </div> 
           </div> 

           <div class="form-group"> 
            <label class="col-md-4 control-label">Contact Phone</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="phoneNumber" value="{{ old('phoneNumber') }}" placeholder="Enter Mobile Number"> 
            </div> 
           </div> 



           <div class="form-group"> 
            <label class="col-md-4 control-label">Address</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="address" value="{{ old('address') }}" placeholder="Enter Address"> 
            </div> 
           </div> 

           <div class="form-group"> 
            <div class="col-md-6 col-md-offset-4"> 
             <button type="submit" class="btn btn-warning"> 
              Save 
             </button> 
            </div> 
           </div> 

           <a href="{{ url('myform/index') }}">view Data</a> 

          </form> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 


@endsection 

"index.blade.php"

ist
@extends('app') 

@section('content') 


    <div class="templatemo-content-wrapper" xmlns="http://www.w3.org/1999/html"> 
     <ol class="breadcrumb"> 
      <li><a href="{{ url("/") }}"><font color="green">Home</font></a></li> 
      <li class="active">user information</li> 
     </ol> 
     <div class="templatemo-content"> 

      <h1>View/Edit user information</h1> 

      <div> 
       <div> 
        <div> 

         <table id="example" class="table table-striped table-hover table-bordered" bgcolor="#fff8dc"> 
          <thead> 
          <tr> 
           <th>Employee ID</th> 
           <th>Employee No</th> 
           <th>Contact Name</th> 
           <th>Date of birth</th> 
           <th>Mobile number</th> 
           <th>address</th> 

          </tr> 
          </thead> 
          <tbody> 

          {{--{{ UserController::getIndex() }}--}} 
          @foreach($employer as $emp) 
           <tr> 
            <td>{{ $emp->employeeID }}</td> 
            <td>{{ $emp->employeeNo }}</td> 
            <td>{{ $emp->Cname }}</td> 
            <td>{{ $emp->dob }}</td> 
            <td>{{ $emp->phoneNumber }}</td> 
            <td>{{ $emp->address }}</td> 


            <td> 
             {{[email protected] (in_array($nam->isActive, array('Yes','No')))--}} 

             <div class="btn-group"> 
              <button type="button" class="btn btn-info">Action</button> 
              <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown"> 
               <span class="caret"></span> 
               <span class="sr-only">Toggle Dropdown</span> 
              </button> 
              <ul class="dropdown-menu" role="menu"> 
               {{[email protected] ($nam->isActive == 'Yes')--}} 
               <li data-toggle="modal" data-target="#acceptModal" data-bookingid="{{ $emp->employeeID }}"><a href="{{ url('myform/edit/'.$emp->employeeID) }}">View/ Edit</a> 
               </li> 
               {{[email protected]}} 
               <li><a href="{{ url('/myform/delete/'.$emp->employeeID)}}">Delete</a></li> 
              </ul> 
             </div> 
             {{[email protected]}} 
            </td> 
           </tr> 
          @endforeach 
          </tbody> 
         </table> 
         {{$employer->links()}} 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 


    {{--<a href="{{ url('user/add') }}"> <input type="submit" id="add" name="add" value="Edit" class="button"></a>--}} 

    </br> 




    <h4>Create a new Employee</h4> 
    {{--<form class="templatemo-preferences-form" role="form" method="POST" action="{{ action('[email protected]') }}">--}} 
    {{--<input type="hidden" name="_token" value="{{ csrf_token() }}">--}} 

    <form role="form" method="POST" action="{{ url('myform/index') }}"> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 


     <div class="row"> 
      <div class="col-md-6 margin-bottom-15"> 

       <input type="text" class="form-control" name="employeeID" value="{{ old('employeeID') }}" placeholder="Enter employee ID"> 
      </div> 
      <div class="row templatemo-form-buttons"> 
       <div class="submit-button"> 
        <button type="submit" class="btn btn-primary">New</button> 

       </div> 
      </div> 
     </div> 
    </form> 
    {{--</form>--}} 


    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#example').dataTable(); 
     }); 
    </script> 


@endsection 

"edit.blade.php" ist

@extends('app') 

@section('content') 

    <div class="templatemo-content-wrapper"> 
     <div class="container"> 
      <ol class="breadcrumb"> 
       <li><a href="{{ url("/") }}"><font color="green">Home</font></a></li> 
       <li class="active">Employee Form</li> 
      </ol> 
      <div class="row"> 
       <div class="col-md-8 col-md-offset-2"> 
        <div class="panel panel-success"> 
         <div class="panel-heading">Employee Form</div> 
         <div class="panel-body"> 
          @if (count($errors) > 0) 
           <div class="alert alert-danger"> 
            <strong>Whoops!</strong> There were some problems with your input.<br><br> 
            <ul> 
             @foreach ($errors->all() as $error) 
              <li>{{ $error }}</li> 
             @endforeach 
            </ul> 
           </div> 
          @endif 

          <form class="form-horizontal" role="form" method="POST" action="{{ url('myform/myform/') }}"> 
           <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
@foreach($user as $use) 
           <div class="form-group"> 
            <label class="col-md-4 control-label">Employee ID</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="employeeID" value="{{ $use->employeeID }}" placeholder="Enter employee ID"> 
            </div> 
           </div> 


           <div class="form-group"> 
            <label class="col-md-4 control-label">E_number</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="employeeNo" value="{{ $use->employeeNo}}" placeholder="Enter employee number"> 
            </div> 
           </div> 

           <div class="form-group"> 
            <label class="col-md-4 control-label">Name</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="Cname" value="{{ $use->Cname }}" placeholder="Enter Contact Name"> 
            </div> 
           </div> 

           <div class="form-group"> 
            <label class="col-md-4 control-label">DOB</label> 
            <div class="col-md-6"> 
             <input type="date" class="form-control" name="dob" value="{{ $use->dob }}" placeholder="Enter date of birth"> 
            </div> 
           </div> 

           <div class="form-group"> 
            <label class="col-md-4 control-label">Contact Phone</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="phoneNumber" value="{{ $use->phoneNumber }}" placeholder="Enter Mobile Number"> 
            </div> 
           </div> 



           <div class="form-group"> 
            <label class="col-md-4 control-label">Address</label> 
            <div class="col-md-6"> 
             <input type="text" class="form-control" name="address" value="{{ $use->address }}" placeholder="Enter Address"> 
            </div> 
           </div> 

           <div class="form-group"> 
            <div class="col-md-6 col-md-offset-4"> 
             <button type="submit" class="btn btn-warning"><a href="{{ url('myform/update/'.$use->employeeID) }}"> 
              Update</a> 
             </button> 
            </div> 
           </div> 

           {{--<a href="{{ url('myform/index') }}"> <input type="button" id="add" name="add" value="View data" class="button"></a>--}} 

    @endforeach 
          </form> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
@endsection 

"myformController.php" ist

<?php 


namespace App\Http\Controllers; 

use App\myform; 
use Mail; 
use Illuminate\Support\Facades\DB; 
use Faker\Provider\DateTime; 
use App\User; 
use App\Http\Requests\createUserRequest; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Validator; 
use Illuminate\Support\Facades\Input; 
use Symfony\Component\HttpFoundation\Request; 

class myformController extends Controller 
{ 
    public $type = 'myform'; 


    public function getIndex() 
    { 
//  $user = DB::table('user')->get(); 
     $employer = DB::table('employee')->simplePaginate(5); 
     return view('myform.index')->with('employer',$employer); 
    } 


    public function formInsert() 
    { 
     $postform = Input::all(); 
     //insert data into mysql table 
     $data =  array('employeeID'=> $postform['employeeID'], 
      'employeeNo'=> $postform['employeeNo'], 
      'Cname'=> $postform['Cname'], 
      'dob'=> $postform['dob'], 
      'phoneNumber'=> $postform['phoneNumber'], 
      'address'=> $postform['address'], 


     ); 
     // echo print_r($data); 
     $ck = 0; 
     $ck = DB::table('employee')->Insert($data); 
     //echo "Record Added Successfully!"; 
     $employer = DB::table('employee')->simplePaginate(10); 
     return view('myform.index')->with('employer',$employer); 


    } 

    public function delete($id) 
    { 
     DB::table('employee')->where('employeeID', '=', $id)->delete(); 
     $employer = DB::table('employee')->simplePaginate(10); 
     return view('myform.index')->with('employer', $employer); 
    } 

    public function formIDinsert() 
    { 
     $postform = Input::all(); 
     //insert data into mysql table 
     $data =  array('employeeID'=> $postform['employeeID'], 

     ); 
     // echo print_r($data); 
     $ck = 0; 
     $ck = DB::table('employee')->Insert($data); 
     //echo "Record Added Successfully!"; 
     $employer = DB::table('employee')->simplePaginate(10); 
     return view('myform.index')->with('employer',$employer); 


    } 

    public function edit($id) 
    { 
     try { 
      //Find the user object from model if it exists 
      $user=DB::table('employee')->where('employeeID', '=', $id)->get(); 
      //$user = User::findOrFail($id); 
      //Redirect to edit user form with the user info found above. 
      return view('myform.edit')->with ('user', $user); 

      //return view('myform.edit')->with('user', myform::find($id)); 
     } catch (ModelNotFoundException $err) { 
      //redirect to your error page 
     } 
    } 

    // Update user 
    public function update(Request $request, $id) 
    { 
     try{ 
      //Find the user object from model if it exists 
      $user= myform::findOrFail($id); 
      DB::table('employee') 
       ->where('employeeID', $id) 
       ->update(['employeeNo' =>$request['employeeNo'], 
       'Cname'=>$request['Cname'], 
       'phoneNumber'=>$request['phoneNumber'], 
       'address'=>$request['address'] 
       ]); 
      //Set user object attributes 
      //the $request index should match your form field ids!!!!! 
      //you can exclude any field you want. 

//   $user->employeeNo = $request['employeeNo']; 
//   $user->Cname = $request['Cname']; 
//   $user->phoneNumber = $request['phoneNumber']; 
//   $user->address = $request['address']; 

      //Save/update user. 
      $user->save(); 
      return view('myform.index')->with('user', $user); 
      //redirect to somewhere 
     } 
     catch(ModelNotFoundException $err){ 
      //Show error page 
     } 
    } 


} 

Modell "myform.php" ist

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class myform extends Model 
{ 

    protected $table = 'employee'; 
    //protected $primaryKey = 'employeeID'; 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'employeeID', 
     'employeeNo', 
     'Cname', 
     'dob', 
     'phoneNumber', 
     'address', 

    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
} 

routes.php ist

Route::any('myform', function() 
{ 
    return view('myform/myform'); 
}); 

Route::any('myform/myform', '[email protected]'); 
Route::any('myform/index', '[email protected]'); 
//to show edit form and fetch passed user id info from db 
Route::get('myform/edit/{id}', '[email protected]'); 

//to get the edited info and save it to db 
Route::get('myform/update/{id}', '[email protected]'); 
Route::any('myform/index', '[email protected]'); 
Route::any('myform/delete/{id}', '[email protected]'); 

Antwort

1

Sie wollen dies in Ihrer Route ändern:

Route::get('myform/update/{id}', '[email protected]'); 

zu

//Because the data in your form is transferred/submitted by post request 
Route::post('myform/update/{id}', '[email protected]'); 

dann Update-Funktion auf diese

ändern
// Update user 
public function update(Request $request, $id) 
{ 
    try{ 
     //Find the user object from model if it exists 
     $user= myform::findOrFail($id); 

     //$request contain your post data sent from your edit from 
     //$user is an object which contains the column names of your table 

     //Set user object attributes 
     $user->employeeNo = $request['employeeNo']; 
     $user->Cname = $request['Cname']; 
     $user->dob = $request['dob']; 
     $user->phoneNumber = $request['phoneNumber']; 
     $user->address = $request['address']; 

     // Save/update user. 
     // This will will update your the row in ur db. 
     $user->save(); 

     return view('myform.index')->with('user', $user); 
    } 
    catch(ModelNotFoundException $err){ 
     //Show error page 
    } 
} 

Wenn Sie Fragen haben oder brauchen Klarheit Sie sind herzlich willkommen :)

-Update in Ihrer Bearbeitungsansicht fragen

ändern Sie diese

<form class="form-horizontal" role="form" method="POST" action="{{ url('myform/myform/') }}"> 

zu

<form class="form-horizontal" role="form" method="POST" action="{{ url('myform/update/').$user->employeeID}}"> 

Änderung $user->employeeID zu, was auch immer Ihre Primärschlüssel ist.

Auch dieses

<button type="submit" class="btn btn-warning"><a href="{{ url('myform/update/'.$use->employeeID) }}"> 
             Update</a> 
            </button> 

dieses Sie, wie ich weiter oben in dieser Antwort erwähnt beheben hat

<button type="submit" class="btn btn-warning">Update</button> 

Aso nicht ändern Sie Ihre Route.

+0

der Code, den Sie eingeben, ist für die Einfügung denke ich. denn nachdem ich die Details von meiner edit.blade.php außer MitarbeiterID (Primärschlüssel) bearbeitet habe. Wenn ich auf "Speichern" klicke, bekomme ich den Fehler "SQLSTATE [23000]: Verletzung der Integritätsbedingung: 1062 Eintrag '685434515' für den Schlüssel 'PRIMARY' duplizieren (SQL: in 'employee' einfügen (' employeeID', 'employeeNo',' Cname', 'dob',' phoneNumber', 'Adresse') Werte (685434515, 545, juzmeeee, 2016-07-13, 2147483647, ugufvjmk, j)" –

+0

wenn ich die employeeID (Primärschlüssel) auch ändere, wenn ich auf Speichern klicke es speichert als neue Daten. Das bedeutet, es ist die gleiche Arbeit wie das Einfügen. Können Sie bitte sagen, wie Sie die Daten aktualisieren? –

+1

Dies ist der Code für die Aktualisierung von https://laravel.com/docs/5.2/eloquent#basic-updates, das Problem liegt entweder bei Ihrer Tabelle, wo Sie einen eindeutigen Index haben oder die ID, die von der Ansicht an den Controller übergeben wurde, ist falsch . – theMohammedA