File size: 2.15Kb
<?PHP
require(__DIR__ . '/../start.php');
/*
Проверка валидности
*/
IsValidActions();
/*
Проверка на авторизацию
*/
if(empty($_SESSION['id'])) {
AlertError(getLang('backstage_auth'));
}
/*
Поиск
*/
if(isset($_POST['Search'])) {
try {
$searchTerm = $_POST['q'];
// Разбиваем входную строку на отдельные слова
$searchTerms = explode(" ", $searchTerm);
// Формируем части запроса для каждого слова
$conditions = [];
$params = []; // Массив для хранения параметров
foreach ($searchTerms as $index => $term) {
$paramName = ":param$index"; // Уникальное имя параметра для каждого слова
$conditions[] = "`first_name` LIKE $paramName OR `last_name` LIKE $paramName";
$params[$paramName] = "%$term%"; // Заполняем массив параметров
}
// Объединяем части запроса с помощью оператора OR
$query = 'SELECT * FROM `users` WHERE (' . implode(' OR ', $conditions) . ') AND `approved`=\'1\'';
$sth = pdo()->prepare($query);
// Привязываем каждый параметр к запросу
foreach ($params as $paramName => $paramValue) {
$sth->bindValue($paramName, $paramValue);
}
$sth->execute();
if(!$sth->rowCount()) {
AlertError(getLang('search_error'));
}
while($Result = $sth->fetch(PDO::FETCH_OBJ)) {
tpl()->AddCell('resultSearch', tpl()->Set([
'{id}' => $Result->id,
'{image}' => $Result->image,
'{first_name}' => $Result->first_name,
'{last_name}' => $Result->last_name,
'{online}' => users()->isOnline($Result->id) ? getLang('system_online') : timeElapsedString($Result->date_online),
'{login}' => $Result->login
], isset($_POST['type']) ? tpl()->Get('elements/search/people_clip') : tpl()->Get('elements/search/people')));
}
AlertSuccess(
tpl()->Execute(tpl()->GetCell('resultSearch'))
);
}
catch(Exception $e) {
AlertError($e->getMessage());
}
}