Как вывести данные из базы один раз?

Всем привет. Есть такой оброботчик:

function get_footer()
{
    global $link;
    $sql = "SELECT * FROM footer";
    $result = mysqli_query($link, $sql);
    $posts = array();
    while ($row = $result->fetch_assoc()) {
        $posts[] = $row;
    }
    return $posts;
}


позже я вывожу данные на сайте:

<?php foreach ($posts as $post) : ?>
                <div class="col-xl-6">
                    <img src="img/logo.svg" alt="logo" class="logo_footer">
                    <p><?php echo $post['description'] ?></p>
                </div>
            
            <div class="col-xl-3">
                <h5><?php echo $post['title'] ?></h5>
                <p><?php echo $post['description'] ?></p>
            </div>
            <div class="col-xl-3">
                <h5><?php echo $post['title'] ?></h5>
                <p><?php echo $post['description'] ?></p>
            </div>
            <?php endforeach; ?>


Но эти данные выводятся в цикле. Подскажите пожалуйста, как сделать чтобы данные вывелись только один раз?
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
Анастасия,
Тебе необходимо в запросе вытащить нужные записи из БД и при добавлении их в масив проставить индексы:
function get_footer()
{
    global $link;
    $sql = "SELECT * FROM footer WHERE id in (1, 2, 3)";
    $result = mysqli_query($link, $sql);
    $posts = array();
    while ($row = $result->fetch_assoc()) {
        $postId = $row['id'];
        $posts[$postId] = $row;
    }
    return $posts;
}


А потом в шаблоне убери цикл и бери записи по индексу:
<div class="col-xl-6">
                <img src="img/logo.svg" alt="logo" class="logo_footer">
                <p><?php echo $posts[1]['description'] ?></p>
            </div>
            
            <div class="col-xl-3">
                <h5><?php echo $posts[2]['title'] ?></h5>
                <p><?php echo $posts[2]['description'] ?></p>
            </div>
            <div class="col-xl-3">
                <h5><?php echo $posts[3]['title'] ?></h5>
                <p><?php echo $post[3]['description'] ?></p>
            </div>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы