Задать вопрос
@lemonlimelike

Что не так с поиском по сайту?

Нашел один из скриптов поиска, все изменил, но выводит ошибку Class 'db' not found на 6 строке. В чем проблема?
<?php
//получаем данные через $_POST
if (isset($_POST['search'])) {
    // подключаемся к базе
    include('/includes/config.php');
    $db = new db();
    // никогда не доверяйте входящим данным! Фильтруйте всё!
    $word = mysql_real_escape_string($_POST['search']);
    // Строим запрос
    $sql = "SELECT * FROM `videos` WHERE `title` LIKE '%" . $word . "%' ORDER BY title LIMIT 10";
    // Получаем результаты
    $row = $db->select_list($sql);
    if(count($row)) {
        $end_result = '';
        foreach($row as $r) {
            $result         = $r['title'];
            $bold           = '<span class="found">' . $word . '</span>';
            $end_result     .= '<li>' . str_ireplace($word, $bold, $result) . '</li>';
        }
        echo $end_result;
    } else {
        echo '<li>По вашему запросу ничего не найдено</li>';
    }
}
?>
  • Вопрос задан
  • 176 просмотров
Подписаться 1 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
twobomb
@twobomb
Крч.
Данные:
БД Mysql логин root пароль 123456 имя базы данных my_bd_name хост localhost
Структура бд
1 таблица videos
Поля id, title,description,category
Данные скрин2b1706e4d09e4d6e943c8e236a71121e.PNGКод index.php
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form method="post" action="search.php">
   			<input type="text" name="search" id="search_box" class='search_box'/>
   			<input type="submit" value="Поиск" class="search_button" /><br />
    </form>
</body>
</html>

Код search.php
<?PHP
function search ($query) 
{ 
    $query = trim($query); 
    $query = htmlspecialchars($query);

    if (!empty($query)) 
    { 
        if (strlen($query) < 1) {
            $text = '<p>Слишком короткий поисковый запрос.</p>';
        } else if (strlen($query) > 128) {
            $text = '<p>Слишком длинный поисковый запрос.</p>';
        } else { 
           $con = mysqli_connect("localhost","root","123456","my_bd_name") or die(mysqli_error($con));//Тут твои значения
            $q = "SELECT * FROM `videos` WHERE `title` LIKE '%$query%'";

            $result = mysqli_query($con,$q);

            if (mysqli_num_rows($result) > 0) { 
                $num = mysqli_num_rows($result);

                $text = '<p>По запросу <b>'.$query.'</b> найдено '.$num. ' совпадений</p>';

                while ($row = mysqli_fetch_assoc($result)){
                    $text .= "<div id='film{$row['id']}'>";
                    $text .= "<p>Название: {$row['title']}</p>";
                    $text .= "<p>Описание: {$row['description']}</p>";
                    $text .= "<p>Жанр: {$row['category']}</p>";
                    $text .= "</div>";
                }
            } else {
                $text = '<p>По вашему запросу ничего не найдено.</p>';
            }
        } 
    } else {
        $text = '<p>Задан пустой поисковый запрос.</p>';
    }

    return $text; 
} 

?>
<?php 
if($_SERVER["REQUEST_METHOD"] == "POST"){
    if (isset($_POST['search'])) { 
        $search_result = search ($_POST['search']); 
        echo $search_result; 
    }
}
?>

Код работает 100% ece652abe73b457283fc77fcbd3e6885.PNG4eaac31b496a47afa5e5c9d925d3c353.PNG
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@ipokos
Исходя из строки:
$row = $db->select_list($sql);
В $db у вас создается объект для работы с базой, который у вас в этом файле не подключен.

Когда проект увеличивается (классов становится больше), достаточно проблематично, "ходить" и подключать их (да и в целом это не правильно).
Для этого используются автолоадеры.
Например:
$class_name = 'db';
spl_autoload_register(function ($class_name) {
    require( '../folder_name_classes/' . $class_name . '.php');
});

Подключаете файл с автолоадером и вызываете нужные классы.
Ответ написан
Комментировать
djQuery
@djQuery
"Кодируем помаленьку" ("Сказка о Тройке")))
Видимо, используется сторонняя библиотека классов, которую вы забыли подключить или подключили неправильно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽