0

我试图让一个搜索栏通过我的数据库并获取包括用户将输入的这两个随机数的所有数字。两个连续的数字可以在字符串中的任何位置,然后它应该抓住整个字符串。我遇到的一个问题是表单在布局中(也许没关系,但我仍然想知道如何将布局放在控制器中并将其包含在其他方法中)所以它不有它自己的方法和表单本身我试图路由到另一个视图并显示搜索结果。截至目前,这是我得到的错误:Missing argument 1 for App\Http\Controllers\SearchController::SearchEngine()

在我的布局中:

{!! Form::open(array('method' => 'GET', 'url' => 'search_engine')) !!}
    <div class="form-group">
        {!! Form::label('SEARCH:') !!}
        {!! Form::text('search', null, ['class' => 'form-control',
          'placeholder' =>'(NSN or PN)', 'size' => '20']) !!}
        {!! Form::submit('Submit', ['class' => 'btn btn-primary form-control']) !!}
    </div>
{!! Form::close() !!}

在我的路线中:`Route::get('search_engine', 'SearchController@SearchEngine');

在我的控制器中:

 public function SearchEngine($i)
    {
        $search = input::get('search');
        $terms = explode(" ", $search);
        $query = fsgdata::where('fsg_number')->get();

        foreach($terms as $each) {
            $i++;
            if($i == 1) {
                $query .= "fsg_number LIKE '%$each%' ";
                echo $each;
            }
            else {
                $query .= "0R fsg_number LIKE '%$each%' ";
            }
        }

    // connect
        mysql_connect("localhost", "USERNAME", "PASSWORD");
        mysql_select_db("DB_NAME");

        $query = mysql_query($query);
        $numrows = mysql_num_rows($query);
        if ($numrows > 0) {

            while ($row = mysql_fetch_assoc($query)) {
                $fsg_number = $row['fsg_number'];

                echo "<h2>$fsg_number</h2>";
            }
        }
        else {
        }

    // disconnect
        mysql_close();

        return View('Partials.search_form');
    }

我的观点只是另一个搜索栏等。

不幸的是,也许我是个笨蛋,但 laravel 文档并没有详细介绍它们的任何功能,而是选择做一个完整的示例图片样式。我是 laravel 时期的新手,所以对我来说填写点的任务可能非常艰巨。

4

1 回答 1

1

我知道我来晚了,但你为什么不使用 Laravel 的原生查询构建器呢?它将清理您的查询,自动清理它们。

看起来您也试图从错误的表单中检索数据。

从 post 表单获取数据的示例方法应如下所示:

public function retrieveFromPost(Request $request) {
    if ($request->has('param')) {
        $param = $request->input('param');
            $data = DB::select("SELECT *
            FROM table_name
            WHERE column_name LIKE :param" ['param' => $param]);
            return view('view', ['data' => $data]);
    } else { 
        return; 
    }

这将验证请求在从 post 表单发送的“param”参数下是否具有有效输入。它将使用 SQL 'LIKE' 语句选择数据,并返回一个视图,其中所有检索到的数据都传递到视图中。如果来自 post 请求的数据无效,else 语句将返回并结束脚本。

于 2015-07-19T23:23:34.727 回答