如何在laravel框架中不使用表单和javascript更新表值

如何在laravel框架中不使用表单和javascript更新表值,javascript,php,mysql,laravel,Javascript,Php,Mysql,Laravel,我正在从事我的一个项目,我想从数据库中获取一个名为“Clients”的表,并显示其数据。很好,这是一项容易的任务。现在我想更新表中的一些数据。我正试图找出哪种方法是实现这一点的最佳方法,因为我正在使用Laravel框架 我有下面的for循环,我在一个表中显示数据 for ($i=0; $i<$clientNumber; $i++) { ?> <tr> <td> <form method="post" action="{{U

我正在从事我的一个项目,我想从数据库中获取一个名为“Clients”的表,并显示其数据。很好,这是一项容易的任务。现在我想更新表中的一些数据。我正试图找出哪种方法是实现这一点的最佳方法,因为我正在使用Laravel框架

我有下面的for循环,我在一个表中显示数据

for ($i=0; $i<$clientNumber; $i++) { ?>
    <tr>
    <td>
        <form method="post" action="{{URL::to('/')}}">
            {{csrf_field()}} <!-- Used for the token --> 
            <button type="submit" value="<?php echo $i; ?>" class="editButton" > <i class="fa fa-edit"></i> </button>
        </form>
    </td>
    <td> <?php echo $data[$i]->clientId; ?> </td>
    <td> <?php echo $data[$i]->clientFirstname; ?> </td>
    <td> <?php echo $data[$i]->clientSurname; ?> </td>
    <td> <?php echo $data[$i]->clientEmail; ?> </td>
    <td> <?php echo $data[$i]->clientMobile; ?> </td>
    <td> <?php echo $data[$i]->clientPhone; ?> </td>
    <td> <?php echo $data[$i]->clientAdrress; ?> </td>
    <td> <?php echo $data[$i]->companyName; ?> </td>
    <td> <?php echo $data[$i]->companyType; ?> </td>
    <td> <?php echo $data[$i]->services; ?> </td>
    <td> <?php echo $data[$i]->websiteURL; ?> </td>
    <td> <?php echo $data[$i]->renewDate; ?> </td>
    <td> <?php echo $data[$i]->totalPrice; ?> </td>
    <td> <?php echo $data[$i]->deposit; ?> </td>
    <td> <?php echo $data[$i]->balance; ?> </td>
    <td> <?php echo $data[$i]->serverPrice; ?> </td>
    <td> <?php echo $data[$i]->comments; ?> </td>
    <input type="hidden" name="rowId" value="<?php echo $i; ?>">
    </tr> 
<?php
}
如您所见,我添加了以下代码

<button type="submit" value="<?php echo $i; ?>" class="editButton" > <i class="fa fa-edit"></i> </button>
这样,我可以为每一行设置一个按钮,当我单击该按钮时,将提示我进入编辑区域

我想在不加载其他页面的情况下解决此问题。例如,我已经开发了一个版本,当点击按钮时,我会被重定向到新页面

我在苦苦挣扎,因为我不知道如何在Laravel中形成一个SQL查询,该查询依赖于在按下按钮或类似按钮后将知道的行号。例如,从id==XXX的表中选择*

这个问题清楚吗

谢谢你抽出时间, -瓦西里斯

我想更新表中的一些数据。。。不加载其他页面。。。要在Laravel中形成依赖于行号的SQL查询

我强烈建议你进行一次旋转

*编辑以使用管线模型绑定

您的控制器:

刀片:


不,问题不清楚。当你点击按钮时会发生什么?您希望在没有正常表单提交的情况下发生一些事情,但也没有Javascript?SQL查询是问题的第二部分吗?哦,当我单击按钮时,我想将一些数据更新到数据库中。我需要运行一个简单的更新查询。我不想重新加载页面或将表单数据发送到另一个php文件。不管怎样,在拉雷维尔做这件事最好的方法是什么?我想你可能有一些术语混淆。你的标题说你想避免使用表单和Javascript——如果你想让你的用户输入数据,你需要一个表单。您说您不想将数据发送到另一个PHP文件——如果您想对该数据执行任何操作,您必须这样做。你说你想避免使用JS,但是如果你不想做一个普通的表单提交,你就必须使用JS。我建议大家通读一下Laravel文档,它们非常好,而且非常简单,或者找到一个基本的Laravel CRUD教程。我发现这很有帮助,但遗憾的是,它在以后的版本中似乎并不存在。一些细节可能已经改变,但方法和大纲是相同的。因此,您认为实现这一点的更好方法是使用一个执行更新查询的新文件?虽然这通常是正确的方法,但细节不是很好的做法,并且没有利用Laravel。例如,在表单上,为操作使用REST端点,并使用。在控制器中,使用类型提示和访问要更新的模型。更新您的模型。这听起来很复杂,但找到一个CRUD教程并仔细阅读,它很简单。@Anonymous使用新文件是什么意思?你已经有一个控制器了-我只是叫它YourController以避免混淆。这将实现我认为您希望实现的目标。@Don't我同意这是一个简化版本。从OP的问题来看,我认为他们对Laravel/PHP的理解总体上有相当大的差距。解释REST、路由模型绑定、雄辩等等都远远超出了原始问题的范围。@Don’不要这么说,我编辑了我的答案以反映您的评论
use App/Client;

public function update(Request $request, Client $client)
{
    $client->update($request->all());

    // Then, return back to the view 
    return back()->with('success', 'Field updated successfully!');
}
<!-- optional -->
@if (session('success'))
    <div class="alert alert-success" role="alert">
        {{ session('success') }}
     </div>
@endif

<form method="POST" action="/your/route/{{ $i }}">
    @csrf 
    @method('PUT')
    <!-- form inputs -->

    <button type="submit" class="editButton">Edit</button>
</form>
Route::put('/your/route/{client}', 'YourController@update')->name('update-client');