首页 > 解决方案 > 如何将选择的值存储在laravel的变量中

问题描述

你好,我是 laravel 的新手。我不知道如何将选择的值存储在变量中。这就是我在 php 中的操作方式。但是如何在 laravel 中?谢谢你的帮助 :)

<?php
session_start();

//Database
$servername = "127.0.0.1";
$username = "root";
$password = "root";

//Connection to Database
$conn = new mysqli($servername, $username, $password);

//Connection Test
if(!$conn) {
echo "Not connected to Server"
}
if(!mysqli_select_db($conn, 'test')){
echo "No connection to Database";
}

//store data in variable
$vorname = $_POST['name'];
$name = $_POST['age'];
?>

<!--Form Select-->
<form action="test.php" method="post">
<select name="name">
    <option value="Lisa"></option>
    <option value="Laura"></option>
</select>
<select name="age">
    <option value="20">20</option>
    <option value="21">21</option>
</select>
<button type="submit">Sent</button>
</form>

<?php
$query = "SELECT * FROM test WHERE name = $name AND age = $age";
$profile = $conn->query($query);
?>

我想要一个带有选择的表单,并且选定的选项应该存储在一个变量中。然后查入数据库。然后显示结果。我不知道如何在 laravel 中做到这一点。谢谢 :)

标签: phpsqllaravel

解决方案


好吧,让我们开始吧。我建议你学习 laravel 文档,这样你就更清楚了。

首先,您需要在 web.php 文件中创建路由。

Route::get('/test', 'testController@index')->name('test.index');
Route::post('/values', 'testController@getValues')->name('test.values');

第一个将返回您的视图,第二个是插入数据。挂在那里,我将在下一行中解释所有内容。

现在您需要一个控制器来处理数据,当然还需要一个视图来预览您的下拉列表。

为了制作控制器,您可以简单地使用php artisan make:controller testController命令。

这将创建一个名为testController的控制器,就像我们在路由中命名它一样。

   <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;

class testController extends Controller
{

    public function index()
    {
        return view('test');
    }
}

这就是您的控制器在此步骤中的外观。只需返回您的视图模板(例如,我将其命名为测试)。现在您实际上需要创建您尝试返回的视图。因此,在视图文件中,您创建一个 test.blade.php 文件并发布您的 html 代码进行一些修改。

<form action="{{ action('testController@getValues') }}" method="post" id="postData">
    {{ csrf_field() }}
<select name="name">
    <option value="Lisa">Lisa</option>
    <option value="Laura">Laura</option>
</select>
<select name="age">
    <option value="20">20</option>
    <option value="21">21</option>
</select>
<button type="submit">Sent</button>
</form>

您会注意到表单的操作直接指向将在下一步中创建的控制器函数。它用于在数据库中插入数据。

csrf_field 创建一个令牌。现在你会意识到它可以帮助你的会话不“超时”,但它的作用远不止于此。在这里阅读更多信息!!!

访问表单的方式很简单,这就是 laravel 的路由让事情变得如此简单的原因。像“localhost/my_project_folder/test”一样,你应该能够看到你的视图。

好的继续前进。现在您需要将数据从视图发送到控制器,以便将其存储在数据库中。

我们需要在控制器中创建一个新函数,该函数的名称getValues与我们在开始时在 web.php 文件中的名称相同。现在你的控制器应该是这样的:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;

class testController extends Controller
{

    public function index()
    {
        return view('test');
    }

    public function getValues(Request $request){
        $name=$request->get('name');
        $age=$request->get('age');

        $insertData=DB::table('data')->insert(
            ['name' => $name, 'age' => $age]
        );

    }
}

请求方法在 laravel 中非常有用,所以在这里研究更多关于这个方法的信息!!!

现在是最后一部分。连接您的数据库。所有连接都发生在 .env 文件中。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testingdata
DB_USERNAME=root
DB_PASSWORD=root

这是我本地主机中的私人数据库,因此您可以使用您的凭据对其进行修改。完成此步骤后,您就可以开始了。

如果您使用了不同的数据库或进行了很多更改等,并且感觉您正在使用旧设置运行php artisan config:cache命令来配置您的缓存与最新的更改。

这是将数据从表单插入数据库的最简单的演练。你可以对其进行优化和扩展,所以我对你的建议是开始阅读 laravel 文档,如果可能的话,可以访问 laracast 并且如果你有时间参加 laracasts 论坛。


推荐阅读