Если вы не собираетесь что-либо менять в базе данных - вы просто выбираете - продолжайте использовать GET вместо POST. Преимущество этого заключается в том, что он позволит вам сохранить URL в качестве строки поиска. Вы также можете обновить поиск, не получая сообщение о повторной отправке сообщения. Вы просто хотите убедиться, что вы параметризуете свои значения перед отправкой их в базу данных. Обычно я отправляю эти значения через функции sanitize, такие как регулярное выражение, которое гарантирует, что у вас есть буквы, если вы ожидаете буквы, или цифры, если вы ожидали числа.
На той же странице (весь поиск):
<form action="<?= $_SERVER["REQUEST_URI"]; ?>" method="GET">
<input name="major" value="<?= $_GET["major"]; ?>" />
<select name="college">
<option value="1" <?PHP if( $_GET["college"] == 1 ) echo 'selected="true"'; ?>>Business</option>
</select>
</form>
<?PHP
if( ! empty( $_GET ) ){
if (isset($_GET['major'])) {
$wheres[] = 'a.major = :major';
$params[':major'] = $_GET['major'];
}
if (isset($_GET['name'])) {
$wheres[] = 'b.name LIKE :name';
$params[':name'] = '%'.$_GET['name'].'%';
}
// And so on for all parameters
$sql = "SELECT *
FROM user_details AS a
JOIN user AS b ON a.uid = b.id";
if (!empty($wheres)) {
$sql .= " WHERE " . implode(' AND ', $wheres);
}
$stmt = $db->prepare($sql);
$stmt->execute($params);
}
?>
Теперь вы можете отображать свои данные.
edit: Я написал другую половину ответа, а затем он написал вторую половину, поэтому я просто включил его ...
. Кроме того, следующий уровень сложности в этом заключается в том, чтобы вывести PHP из файла поиска и поместить его в другой файл. Когда вы нажимаете кнопку поиска в своей форме, вы должны использовать AJAX для вызова элементов PHP. Затем файл PHP вернет результаты через Ajax. Вы можете вернуть либо предварительно отформатированный HTML, либо JSON, и пусть что-то вроде JQuery отобразит его для вас.