如何在laravel中的变量中存储选择的值

时间:2018-08-27 07:37:54

标签: php sql 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);
?>

我想要一个带有选择的表单,并且所选的选项应该存储在变量中。 然后在数据库中检查。然后显示结果。 我不知道该怎么做。 谢谢:)

1 个答案:

答案 0 :(得分:2)

好的,让我们开始吧。我建议您学习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即可)。现在,您实际上需要创建要返回的视图。因此,在views文件中,您将创建一个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>

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

csrf_field创建一个令牌。现在,您将认识到它可以帮助您的会话不“超时”,但还可以做更多的事情。进一步了解here!!!

访问表单的方法很简单,这就是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中非常有用,因此请进一步研究此方法here!!!

现在是最后一部分。连接数据库。所有连接都在.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论坛。