@fawnessss

Не работает поиск на сайте, код php. В чем ошибка?

Раньше был вывод таблицы, потом добавила поиск, он не работал. На данном этапе выводит только так646515df98be8879388892.png

результат кода - вывод окна поиска и ниже таблицы. при попытке осуществить поиск страница обновляется. Теперь еще: Предупреждение: Неопределенная переменная $data в C:\Apache\Apache24\htdocs\postgresql.php на линии 45

Предупреждение: аргумент foreach() должен иметь тип array | object, значение null указано в C:\Apache\Apache24\htdocs\postgresql.php на линии 45
<?phpheader ('Content-Type: text/html; charset=utf-8');
require_once 'load.php';
error_reporting(E_ALL);

$inputSearch = $_GET['search'] ?? '';

$vak = $pdo->prepare("SELECT * FROM vak where name_iv like '%%'");
$vak->execute();
$data = $vak->fetchAll();

?>


<!DOCTYPE html>
<html lang="en">
 <head> 
 <title>Joirnals</title>
</head>
<style>
th,td {
    padding: 10 px;
}

th {
 background: #606060;
 color: #fff;
}

td {
 background: #b5b5b5;
}
</style>
<body>

<form action="<?= $_SERVER['REQUEST_URI'] ?>" method="get">
        <p>Поиск: <input type="text" name="search" id=""> <input type="submit" value="Поиск"></p>
    </form>
<table>
        <tr>
            <th>Наименование</th>
            <th>ISSN</th>
            <th>Код специальности</th>
            <th>Дата включения</th>
        </tr>
    <?php foreach($data as $value): ?>
        <tr>
            <td><?=  htmlspecialchars($value['name_iv']) ?></td>
            <td><?=  htmlspecialchars($value['issn_iv']) ?></td>
            <td><?=  htmlspecialchars($value['spec_cod']) ?></td>
            <td><?=  htmlspecialchars($value['data_vkl']) ?></td>
        </tr>
    <?php endforeach ?>

   
</table>
</body>
</html>
  • Вопрос задан
  • 312 просмотров
Пригласить эксперта
Ответы на вопрос 1
17_planet
@17_planet
Full Stack Developer, web-studio in Odessa
Поиск или не работает, или нет подходящих результатов.

Скорее с $vak что-то не так.
Согласно документации он должен возвращать массив.

Но в любом случае не помешала бы проверка чтобы вот это не лезло:

Предупреждение: Неопределенная переменная $data в C:\Apache\Apache24\htdocs\postgresql.php на линии 45
Предупреждение: аргумент foreach() должен иметь тип array | object, значение null указано в C:\Apache\Apache24\htdocs\postgresql.php на линии 45


Когда не уверены что в ответ прийдет именно массив, а не null то лучше писать вот так:

$data = $vak->fetchAll() ?? [];

Тут чтобы не гадать, не хватает создание экземпляра обьекта в $pdo, полагаю оно спрятано в файле load.
Но вы вполне можете через var_dump проверить что на каждом моменте находится в переменной $vak и понять в какой из моментов что-то происходит не так.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы