Не могу понять, как получить результаты для нескольких переменных поиска

0

Я дошел до последнего шага результатов поиска с страницей разбивки на страницы. У меня все работает, но только когда есть текстовое поле ввода поиска. Мне нужно, чтобы он мог принимать несколько значений для search_text, так как будет несколько вариантов поиска. То есть, как можно переносить $ pagination в значения и выполнять эту работу, как указано ниже? Все типы ввода формы в HTML-форме на странице имеют имя search_text.

У меня это работало в предыдущем поисковом коде без разбивки на страницы, где я использовал несколько вариантов поисковых запросов в search.php следующим образом:

//the HTML form from another page that is sending the two values
<form name="search" method="post" 
action="http://example.com/search"> Seach for: <input type="text" 
name="search_text[]" /> 
<select name="search_text[]">
<option value="Fiction" selected>Comedy</option>
<option value="Non-Fiction">Drama</option>
</select>
<input type="submit" name="search_button" value="search" /></form>


//search queries from multiple select/input fields in form 
$input = array(
"search_text" => $_REQUEST['search_text'],);
$sgenre = $input['search_text'][0];
$scategory = $input['search_text'][1];

Теперь мне нужно выяснить, как изменить приведенный ниже код (который работает, но только тогда, когда в форме html имеется только одно текстовое поле ввода с именем search_text. Как я могу сделать этот код ниже, принять несколько значений, которые я привожу на страницу с помощью код выше?

$query = "SELECT * FROM stories";
if(isset($_REQUEST["search_text"]) && $_REQUEST["search_text"] != "")
{
$search = htmlspecialchars($_REQUEST["search_text"]);
$pagination->param = "&search=$search";
$query .= " WHERE stories.genre LIKE '%$search%'";
}
$pagination->rowCount($query);
$pagination->config(3, 5);
$query .= " ORDER BY SID ASC LIMIT {$pagination->start_row}, 
{$pagination->max_rows}";
  • 0
    Проблема, я думаю, в том, что $ pagination может иметь только одну переменную, которая является критерием поиска при написании этого кода. Так что, думаю, мне интересно, смогу ли я передать оба результата поиска (для жанра и категории) в виде массива или чего-то в $ pagination и получить правильный код.
Теги:
pdo

1 ответ

0

Возможно, что-то вроде этого

$query = "SELECT * FROM stories";
if(isset($_REQUEST["search_text"]) && $_REQUEST["search_text"] != "")
{

$search = htmlspecialchars($_REQUEST["search_text"]);

$genre =  htmlspecialchars($_REQUEST["search_text"][0]);
$category = htmlspecialchars($_REQUEST["search_text"][1]);

$pagination->param = "&search=$search";

$query .= " WHERE stories.genre LIKE '%$search%'";
$query .= " AND stores.genre LIKE '%$category'";

}
  • 0
    Попробовал ... Я получаю эту ошибку: htmlspecialchars () ожидает, что параметр 1 будет строкой. Вероятно, b / c это массив результатов (2 значения), которые мы сейчас передаем через форму html. имена форм: search_text [] для двух значений формы, которые отправляет пользователь.
  • 0
    Кроме того, если я избавлюсь от символов htmlspecial и сделаю это следующим образом, я не получу никаких результатов: $ search = ($ _REQUEST ["search_text"]); $ genre = ($ _REQUEST ["search_text"] [0]); $ category = ($ _REQUEST ["search_text"] [1]);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню