Поиск в базе данных полученных из формы

Задача:

Найти все статьи в базе данных в заголовках которых есть введенное в форме слово.

Решение:

Первым делом создаем форму для введение того, что и будем искать. Она у нас заключена в теги form.
Важные моменты из формы это input type=”text” name=”search” тут записывается искомый текст и после передается в переменную search.
Если мы нажали кнопу “Искать в базе”, то:
– Соединяемся с БД
– Ищем в базе данных нужное используя LIKE %% для того чтобы введенное слово могло быть в любой части заголовка статьи
– Выводим в табличном виде полученные данные
– Закрываем соединение

Данный пример протестирован на WordPress 4.6.2

<?php
 
 # Создаем форму ввода искомого
 
echo '<table>';
echo '<tr>';
echo '<form action="' . $_REQUEST['PHP_SELF'] . '" method="post">';
echo '<td><input type="text" name="search" value="Введите слово из 
заголовка" maxlength="100" style="width: 145px;"></td>
<td><input type="submit" name="add" value="Искать в базе"></td>
</form>';
echo '</tr>';
echo '</table>';
$search = $_POST['search'];
 
if (isset($_REQUEST['add'])){
 
 #  Соединяемся с БД

    $db = mysql_connect ('localhost', 'user_name', 'user_pass');
    mysql_select_db ('base_name',$db);
    mysql_query("set names utf8");
 
 # Ищем и выводим

    $query = mysql_query("SELECT * FROM `wp_posts` where `post_title` 
LIKE '%" . $search . "%'") or die(mysql_error());
    echo "<table>";
    echo "<h3>Ищем в заголовках " . $search . "</h3>";
    while ($stats = mysql_fetch_assoc($query)) {
        $base = mysql_query("SELECT COUNT(*) FROM `wp_posts`");
        $row  = mysql_fetch_array($base);
        if ($row[0] == 0) {
            echo "empty";
        } else {
            echo "<tr><td>" . $stats['post_title'] . "</td><td>" . 
$stats['post_status'] . "    
        </td><td>" . $stats['ID'] . "</td></tr>";
            $row = mysql_num_rows($query);
        } 
}
echo "</table>";
 
# Закрываем соединение
mysql_close($db);
?>

Добавить комментарий