PHP Reforce Search Engine - PullRequest
       3

PHP Reforce Search Engine

0 голосов
/ 02 сентября 2018

У меня есть эта опция поиска, где она ищет заголовок и категорию, ссылающуюся на переменную, запрошенную ФОРМОЙ.

//This could be Reference or Product Name
$name = mysqli_real_escape_string($con, sanitize($_GET['search']));

//this could be a specific category or Empty(used to reference number)
$category = mysqli_real_escape_string($con, sanitize($_GET['category']));
$x = 0; 
$q = str_replace(array("\\",";"), "", $name);  // remove ALL backslashes & remove ALL ";" -> for sql security: no (simple) injection of commands
$q = trim($q);
$search_exploded = explode(" ", $q);

foreach($search_exploded as $search_each ) { 

$x++; 

   if($x == 1) { 
         $wherearr[]= "ads_title LIKE '%$search_each%' AND category_id = '$category' AND ads_active = 1 AND ads_end = 0"; 
   } else {     
         $wherearr[]= "ads_title LIKE '%$search_each%' AND category_id = '$category' AND ads_active = 1 AND ads_end = 0"; 
   }

}

//$wherearr[] is used to create a new variable $construct to insert to SQL like "Select * from Where $construct"    

Я хочу, чтобы люди могли искать также по ссылке.

Цель состоит в том, чтобы, когда человек вставит ссылку, он автоматически перейдет к продукту.

Добавить это поле:

 $wherearr[]= "ads_reference LIKE '%$search_each%' AND ads_active = 1 AND ads_end = 0";

Как я могу сделать это, используя форму, которую я создал ранее?

1 Ответ

0 голосов
/ 02 сентября 2018

Не уверен, что полностью понимаю ваш вопрос, но постараюсь.

Сначала попытайтесь извлечь все данные из запроса GET.

Некоторые предположения:

  1. Вы использовали AND category_id = '$category', поэтому я предполагаю, что $_GET['category'] извлекает category_id.
  2. При извлечении $_GET['search'] вы получаете список имен, разделенных пробелами. Так что если у вас есть имена вроде foo и bar, то $_GET['search'] будет "foo bar"
  3. Если category_id пусто, я предполагаю, что $name содержит ссылку

Теперь попробуйте этот код:

$name = mysqli_real_escape_string($con, sanitize($_GET['search']));
$category_id = mysqli_real_escape_string($con, sanitize($_GET['category']));
$q = str_replace(array("\\",";"), "", $name); 

$search_exploded = explode(" ", trim($q));
$wherearr = array();
$querySufix = " AND ads_active = 1 AND ads_end = 0";

foreach($search_exploded as $search_each) {
    if ($category_id)
        $wherearr[]= "ads_title LIKE '%$search_each%' AND category_id = '$category_id '" . $querySufix;
    else 
        $wherearr[]= "ads_reference LIKE '%$search_each%'". $querySufix;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...