2015-04-07 5 views
0

Я пытаюсь получить строку поиска, чтобы пройти через мою базу данных и захватить все числа, которые включают эти 2 случайных числа, которые пользователь вводит. 2 последовательных числа могут быть в любом месте строки, а затем должны захватывать всю строку. Одна из проблем, с которыми я сталкиваюсь, заключается в том, что форма находится в макете (возможно, это не имеет значения, но мне все равно хотелось бы знать, как я могу поместить макет в контроллер и включить его в другие методы), поэтому он не есть собственный метод и сама форма, я пытаюсь перейти на другое представление с появлением результатов поиска. На данный момент это ошибка, я получаю: Missing argument 1 for App\Http\Controllers\SearchController::SearchEngine()Попытка получить панель поиска для работы в laravel 5

В моем макете:

{!! 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 :: получить ('SEARCH_ENGINE', 'SearchController @ Поисковик') ;

В мой контроллер:

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'); 
    } 

И на мой взгляд это просто еще один поиск бар и т.д.

К сожалению, может быть, я немой немой, но laravels документы не вдаваться в подробности о любой из их функций и вместо этого выберите один и сделать примерный стиль изображения. Я новичок в период laravel, поэтому мне задача заполнения точек может быть очень сложной.

+1

Вы определили функцию как 'public function SearchEngine ($ i)', где аргумент '$ i' никогда не передается. Что должно быть '$ i'? – manix

+0

ха-ха ничего себе. Благодарю. Честно, я нашел этот код, потому что я никогда раньше не делал панель поиска, и все это было над моей головой. После того, как я исправил это, хотя я получаю странную ошибку 'mysql_connect(): расширение mysql устарело и будет удалено в будущем: вместо этого используйте mysqli или PDO. Это действительно говорит мне, что я не могу использовать базу данных, которую мой босс спросил обо мне? – Vantheman6

ответ

1

Я знаю, что я довольно поздно, но почему бы вам не использовать собственный конструктор запросов Laravel? Он очистит ваши запросы, автоматически очистит их.

Также похоже, что вы пытаетесь также получить данные из формы.

Пример метод для получения данных из почтовой формы должна выглядеть примерно так:

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; 
    } 

Это поможет проверить, что запрос имеет действующий вход под параметром «паров» отправленный из почтовой формы. Он выберет данные с помощью оператора SQL LIKE и вернет представление со всеми полученными данными, переданными в представление. Оператор else возвращает и завершает сценарий, если данные из почтового запроса недействительны.