Показ данных из БД на странице сайта

Рейтинг: 0Ответов: 0Опубликовано: 20.02.2023

Мучаюсь с проблемой.

Суть такова, есть 3 таблице в БД.

  • Книги (books)
  • Пользователи (users)
  • Избранные книги (favorite).

Структуру БД прилагаю.

Дело в том, что после добавления отдельной в книги в избранное пытаюсь отобразить все избранные для отдельного пользователя на странице. Проверка на пользователя - проходит успешно (отображается правильное количество книг), но сами книги отображаются не те, которые нужны, не тот id, а берутся какие-то вообще другие.

Буду рад вашей помощи, заранее большое спасибо!

В файле конфига получаются данные из БД

    $db_users = mysqli_fetch_all(mysqli_query($connect, "SELECT * FROM users"));
    $db_books = mysqli_fetch_all(mysqli_query($connect, "SELECT * FROM books"));
    $db_favorite = mysqli_fetch_all(mysqli_query($connect, "SELECT * FROM favorite"));

Файл "Избранное".

<?php 
    if ( !isset($_COOKIE['u']) )
    header('Location: index.php');
    require("setting.php");
    require("components/header.php");

    for ( $k = 0; $k < count($db_users); $k++ ) {
        if ( $db_users[$k][0] == $_COOKIE['u'] ) {
            $user_id = $db_users[$k][0];
        }   
    }

?>
    <div class="container center">
        <h2>Избранные уроки</h2>
    </div>

    <div class="container center margin-40">
        <p>
            <a href="books.php">Все темы</a>
        </p>
    </div>

    <div class="container center">
        
    <?php
    for ( $i = count($db_favorite); $i >= 0; $i-- ):
    if  ($user_id == $db_favorite[$i][1]):
    ?>

        <div class="card-book">
            <div class="card-book__img"><img src="<?php echo $db_books[$i][3] ?>" alt="Обложка урока <?php echo $db_books[$i][1] ?>"></div>
            <h5 class="card-book__header str_limit_3"><?php echo $db_books[$i][1] ?></h5>
            <a href="book.php<?php echo '?book_id=' . $db_books[$i][0] . '"' ?>" class="card-book__link">Перейти</a>
        </div>

<?php endif; endfor; ?>

введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения

Ответы

Ответов пока нет.