创建一个函数来编辑和删除表中的输入 - Laravel 5.2

时间:2017-05-10 14:27:33

标签: javascript php html laravel laravel-5.2

我有一个像这样的代码:

  • 我有一个名为'phonebook'的数据库
  • 将联系人存储在名为“contacts'
  • 的表中的位置
  • 这是我使用的两个主要页面的代码:

表格页面(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 = "somesomething@email.com" >
                @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>

当我点击“Submit Information”按钮时,联系人会存储在“通讯录”表格中,我会被重定向到“contacts.blade.php”页面。

当我点击“View contacts”按钮时,我也会被重定向到“contacts.blade.php”。

这是“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>

请注意,我已经有一个按钮来编辑和删除我的联系人,以及功能名称editContact()deleteContact()

我需要什么:

当我点击“编辑”时,我希望被重定向到使用与FORM PAGE相同结构的页面,输入字段填充了我点击EDIT按钮的特定行的信息。 编辑完条目后,我点击“提交信息”按钮,我刚刚编辑的内容替换旧内容,代替创建新条目< / strong>在表中。 编辑:我更喜欢使用Javascript来执行此操作,因此没有关于JS出现的答案的问题。

删除按钮: 当我点击“删除”按钮时,我希望从我的表中删除联系人,然后下一个条目上升一行,取代旧的东西。 编辑:我也更喜欢在这个按钮上使用JS。

实施例: 我在第四排有联系人。 我删除了这个联系人。 表中的第五个条目上升了一个位置 所以,它成为表中的第四个条目。 此外,第六个进入一个位置,成为第五个条目。 等等。

我已经有了逻辑,但我缺乏使这些功能起作用的命令。 另外,我是PHP和Laravel的新手。

2 个答案:

答案 0 :(得分:3)

onclick属性将尝试使用javascript,因此如果您尝试使用PHP,那么您真的不想这样做。

它应该是一个链接(如果你希望它看起来像一个按钮,就像一个按钮一样风格化),它指向你设置编辑联系人的任何路径。该路由将获取联系人的ID,然后显示一个表单,其中所有字段都预先填充了该联系人ID的信息。

然后,表格将指向另一条路线,该路线将获取ID和联系信息,并使用编辑表格中输入的所有信息更新数据库中的记录。

同样适用于删除按钮,它只需要是指向使用联系人ID设置删除联系人的路由的链接。然后它可能会重定向回到同一页面或者你想要它去的地方。

我查看资源控制器,它可能会让你的生活变得更轻松,因为它基本上为你设置了控制器,它具有CRUD操作和路由所需的所有方法。您只需要遍历控制器中生成的每个方法,并按照您认为合适的方式实现它们。

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

答案 1 :(得分:1)

您需要做的是创建一个新页面,该页面将使用您的数据库通过传递ID来填写字段。

  • 您需要一个简单的SELECT命令来获取行,具体取决于您正在编辑的ID:SELECT FROM table WHERE ID=yourid。然后,通过提交,您将不会使用INSERT INTO table VALUES,您将使用UPDATE table SET NAME=new_name WHERE ID=yourid

  • 因此,在删除页面上,传递ID并使用DELETE FROM table WHERE ID=yourid

如果您不知道如何通过网页传递ID,则可通过POSTGET

完成