Вывести форму, содержащую поле для ввода ключевой фразы и сопроводительный текст: «В кл. фразе Вы можете использовать специальные символы: '*' - заменяет любую комбинацию символов; '?' - заменяет один символ. Таким образом на слово 'газ*' найдется 'газ', 'газета', 'газированный' и т.д. на 'баннер?' - 'баннера', 'баннеру', но не 'баннер' и 'баннерный'»
После отправки формы необходимо осуществить поиск по таблице с единственным текстовым полем, по вышеописанному алгоритму.
Вроде бы всё правильно написал, а не работает... при переходе с html на search.php ничего не отображает... Посмотрите код, может я чего не заметил...
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ru">
</head>
<body>
<form name="search" method="post" action="search.php">
<p>В кл. фразе Вы можете использовать специальные символы: '*' - заменяет любую комбинацию символов; '?' - заменяет один символ. Таким образом на слово 'газ*' найдется 'газ', 'газета', 'газированный' и т.д. на 'баннер?' - 'баннера', 'баннеру', но не 'баннер' и 'баннерный'.</p>
<input type="search" name="query" placeholder="Поиск">
<button type="submit">Найти</button>
</form>
</body>
</html>
<?php
include("/db_connection.php"); // подключаемся к бд
function search ($query)
{
$query = trim($query);
$query = mysql_real_escape_string($query);
$query = htmlspecialchars($query);
if (!empty($query))
{
if (strlen($query) < 3) {
$text = '<p>Слишком короткий поисковый запрос.</p>';
} else if (strlen($query) > 128) {
$text = '<p>Слишком длинный поисковый запрос.</p>';
} else {
$q = "SELECT * FROM `words`";
$result = mysql_query($q);
while($row = mysql_fetch_array($result)){
$query = str_replace('*', '(.*)', $query);
$query = str_replace('?', '(.?)', $query);
if(preg_match('/^ '.$query.' $/', $row['name'])){
echo $row['name'];
}
}
}
} else {
$text = '<p>Задан пустой поисковый запрос.</p>';
}
return $text;
}
?>
<?php
if (!empty($_POST['query'])) {
$search_result = search ($_POST['query']);
echo $search_result;
}
?>