2017-05-10 5 views
1

ich einen Code haben, der wie folgt funktioniert:Erstellen einer Funktionseingänge in einer Tabelle zu bearbeiten und löschen - Laravel 5.2

  • Ich habe einen DB namens ‚Telefonbuch‘
  • Wo lagere ich Kontakte in einer Tabelle Namen 'Kontakte'
  • Dies ist mein Code für die beiden Hauptseiten ich benutze:

FORM PAGE (phonebook.blade.php):

....... some css here and stuff ....... 

<body> 

     <h1>Contact Form</h1><br/> 

        {{-- FORM --}} 

     <form method = "POST" action = "contacts"> 

      {{ csrf_field() }} 

      <div class = "form-group"> 
       <label for = "name">Name</label><br/> 
       <input type = "text" id = "name" class = "form-control" name = "name" placeholder = "Name your Name" value = "{!! old('name') !!}"> 
      </div><br/> 

      <div class = "form-group"> 
       <label for = "lastname">Lastname</label><br/> 
       <input type = "text" id = "lastname" class = "form-control" name = "lastname" placeholder = "Name your Lastname" value = "{!! old('lastname') !!}">       
      </div><br/> 

      <div class = "form-group 
       @if($errors->has('email')) 
        has-error 
       @endif"> 
       <label for = "email">E-mail</label><br/> 
       <input type = "text" id = "email" class = "form-control" name = "email" placeholder = "[email protected]" > 
       @if($errors->has('email')) 
        <p class = "help-block">{{ $errors->first('email') }}</p> 
       @endif 
      </div><br/> 

      <div class = "form-group 
       @if($errors->has('phone')) 
        has-error 
       @endif"> 
       <label for = "phone">Phone Number</label><br/> 
       <input type = "text" id = "phone" class = "form-control" name = "phone" placeholder = "I'll call you"> 
       @if($errors->has('phone')) 
        <p class="help-block">{{ $errors->first('phone') }}</p> 
       @endif 
      </div><br/> 

      <div class = "form-group"> 
       <label for = "address">Address</label><br/> 
       <input type = "text" id = "address" class = "form-control" name = "address" placeholder = "I'll even visit you" value = "{!! old('address') !!}">       
      </div><br/> 

      <button type = "submit" class = "submit">Submit Information</button> 
      <a href="contacts"><button type = "button">View Contacts</button></a> 
     </form>  
    </body> 
</html> 

Wenn ich die Schaltfläche "Submit Information" drücke, wird der Kontakt in der Tabelle "Kontakte" gespeichert und ich werde auf die Seite "contacts.blade.php" umgeleitet.

Wenn ich die Schaltfläche "View contacts" drücke, werde ich auch auf "contacts.blade.php" umgeleitet.

Dies ist die „contacts.blade.php

....... some css and scripts here ....... 


<body> 
     <h1>Contacts</h1> 

     <br/> 

     <a href = "phonebook"><button class = "ret" type = "button">Add New Entry</button></a> 

     <br/><br/> 

     <table class = "contacts"> 

      <thead> 
       <tr> 
        <th> ID  </th> 
        <th> Name  </th> 
        <th> Lastname </th> 
        <th> E-Mail </th> 
        <th> Phone </th> 
        <th> Address </th> 
        <th> Edit  </th> 
        <th> Delete </th> 
       </tr> 
      </thead> 

      <tbody> 
       @foreach($contact as $contact)              
        <tr class = "tableBody"> 
         <td class = "id">  {{ $contact->id }}              </td> 
         <td class = "name">  {{ $contact->name }}             </td> 
         <td class = "lastname"> {{ $contact->lastname }}            </td> 
         <td class = "email"> {{ $contact->email }}             </td> 
         <td class = "phone"> {{ $contact->phone }}             </td> 
         <td class = "address"> {{ $contact->address }}             </td> 
         <td class = "edit">  <button class = "btnedit" onclick = "editContact()">Edit</button>  </td> 
         <td class = "delete"> <button class = "btndelete" onclick = "deleteContact()">Delete</button> </td> 
        </tr>      
       @endforeach 
      </tbody> 

     </table> 
     <br/> 
     <a href = "phonebook"><button class = "ret" type = "button">Add New Entry</button></a> 
    </body> 
</html> 

Bitte beachten Sie, ich habe bereits eine Schaltfläche meine Kontakte zu bearbeiten und zu löschen, sowie die Namen der Funktionen, editContact() und deleteContact().

Was ich brauche:

Wenn ich Hit „EDIT“ Ich möchte auf eine Seite umgeleitet werden, die die gleiche Struktur der Form-Seite verwendet, mit den Feldern Eingabe mit der Info, dass bestimmten Zeile gefüllt wo ich die EDIT-Taste drücke. Sobald ich den Eintrag bearbeitet hat, schlug ich die „Information Senden“ und die Dinge, die ich gerade bearbeitet ersetzt das alte Zeug, statt einen neuen Eintrag in der Tabelle zu erstellen. bearbeiten: Ich bevorzuge die Verwendung von Javascript, um dies zu tun, also keine Probleme mit Antworten, wo JS erscheint.

Löschtaste: Wenn ich auf die Schaltfläche "Löschen" klicke, möchte ich, dass der Kontakt aus meinem Tisch entfernt wird und die nächsten Einträge eine Zeile nach oben gehen und die alten Einträge ersetzen. bearbeiten: Ich bevorzuge auch JS für diese Schaltfläche verwenden.

Beispiel: Ich habe einen Kontakt in der vierten Reihe. Ich lösche diesen Kontakt. der fünfte Eintrag in der Tabelle geht um eine Position so wird es der vierte Eintrag in der Tabelle. auch, steigt der sechste Eintrag um eine Position und wird zum fünften Eintrag. und so weiter.

Ich habe bereits die Logik, aber mir fehlen die Befehle, um die Funktionen funktionieren zu lassen. Auch bin ich ziemlich neu in PHP und Laravel.

+0

Vielleicht suchen Sie nach Databases? https://github.com/yajra/laravel-datatables – Troyer

+0

Nicht ganz, Troyer. Aber ich mochte das Repository. Vielen Dank. –

Antwort

3

Das Attribut onclick wird versuchen, Javascript zu verwenden, so dass Sie das nicht wirklich tun möchten, wenn Sie dies mit PHP versuchen.

Es sollte wahrscheinlich ein Link sein (stilisiert wie eine Schaltfläche, wenn Sie möchten, dass es wie eine Schaltfläche aussieht), die auf jede Route verweist, die Sie zum Bearbeiten des Kontakts eingerichtet haben.Diese Route würde die ID des Kontakts annehmen und dann ein Formular anzeigen, in dem alle Felder mit den Informationen dieser Kontakt-ID ausgefüllt sind.

Das Formular würde dann auf eine andere Route verweisen, die die ID und die Kontaktinformationen aufnehmen und den Datensatz in der Datenbank mit allen eingegebenen Informationen im Bearbeitungsformular aktualisieren würde.

Das Gleiche gilt für die Schaltfläche zum Löschen, es müsste nur ein Link sein, der auf eine Route zeigt, die zum Löschen eines Kontakts eingerichtet wurde, und zwar über die Kontakt-ID. Dann würde es wahrscheinlich zurück zu dieser Seite oder wohin auch immer Sie wollten danach umleiten.

Ich würde prüfen, Resource Controller, es könnte Ihr Leben viel einfacher, weil es im Grunde stellt den Controller für Sie mit allen Methoden für CRUD-Operationen sowie die Routen. Sie müssen nur jede Methode im Controller durchlaufen, die generiert und implementiert wird, wie Sie es für richtig halten.

https://laravel.com/docs/5.4/controllers#resource-controllers

+0

Eigentlich möchte ich Javascript hier verwenden, da ich in diesem Bereich besser informiert bin. Danke für die Eingabe, ich werde die Info in der Frage aktualisieren. –

1

Was Sie tun müssen, ist, eine neue Seite zu erstellen, die die Datenbank verwenden, indem sie durch die ID in die Felder zu füllen.

  • Sie benötigen einen einfachen SELECT Befehl die Zeile in Abhängigkeit von der ID Sie bearbeiten, zu erhalten: SELECT FROM table WHERE ID=yourid. Dann durch die Vorlage nicht INSERT INTO table VALUES verwenden, werden Sie UPDATE table SET NAME=new_name WHERE ID=yourid

  • Entsprechend auf der Löschseite, gehen durch die ID und verwenden DELETE FROM table WHERE ID=yourid

verwenden Wenn Sie nicht wissen, wie die ID durch die Seiten zu übergeben es ist getan durch POST und GET

Verwandte Themen