Как показать последние 5 сообщений с изображением при загрузке из базы данных mysql?

Общая цель - показать последние 5 сообщений с их изображением при загрузке в базу данных MySQL. У меня 4 файла:

  • connection.php - подключение к базе данных - отлично работает
    • new_post.php - можно добавить в базу - отлично работает
    • upload.php - загрузка в базу данных (изображение и контент) - отлично работает
    • index.php - домашний, где все отображается * проблемный файл *

Основная проблема, которую я не могу понять, - почему я вижу несколько карточек в index.php? Я предполагаю, что это может быть между циклом while и конфликтом начальной загрузки. У меня только 4 данных в mysql.

Вот index.php:

<?php
require 'conexion.php';
$conexion = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
?>

<!DOCTYPE html>
<html lang = "es" dir = "ltr">
<head>
    <meta charset = "utf-8">
    <title>Blog</title>
    <link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css"
          integrity = "sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin = "anonymous">
    <link rel = "stylesheet" href = "css/estilos.css">
</head>
<body>
<img src = "https://placeimg.com/720/200/arch" id = "banner"/>

<div class = "container" id = "principal">
    <h1>Bienvenido a mi blog!</h1>
    <a href = "new_post.php" class = "btn btn-primary btn-add">Agregar post</a>
    <h2>Ultimos 5 posts</h2>
    <div id = "card-list">

        <div class = "card">
            <?php
            $sql = "SELECT * FROM blogtp_1";
            $result = mysqli_query($conexion, $sql);
            while ($row = mysqli_fetch_array($result)) {
                echo  '<img class = "card-img-top" src = "imagen/' . $row["imagen_upload"] . '"/>
                       <div class = "card-body">
                         <h5 class = "card-title">' . $row["titulo_del_post"] . '</h5>
                         <p class = "card-text">' . $row["contenido_del_post"] . '</p>
                         <a href = "ver.php?id=' . $row["id"] . '" class = "btn btn-primary">Ver</a>
                       </div> ';
            };
            ?>
        </div>

        <div class = "card">
            <?php
            $sql = "SELECT * FROM blogtp_1";
            $result = mysqli_query($conexion, $sql);
            while ($row = mysqli_fetch_array($result)) {
                echo  '<img class = "card-img-top" src = "imagen/' . $row["imagen_upload"] . '"/>
                       <div class = "card-body">
                         <h5 class = "card-title">' . $row["titulo_del_post"] . '</h5>
                         <p class = "card-text">' . $row["contenido_del_post"] . '</p>
                         <a href = "ver.php?id=' . $row["id"] . '" class = "btn btn-primary">Ver</a>
                       </div> ';
            };
            ?>
        </div>

        <div class = "card">
            <?php
            $sql = "SELECT * FROM blogtp_1";
            $result = mysqli_query($conexion, $sql);

            while ($row = mysqli_fetch_array($result)) {
                echo  '<img class = "card-img-top" src = "imagen/' . $row["imagen_upload"] . '"/>
                       <div class = "card-body">
                         <h5 class = "card-title">' . $row["titulo_del_post"] . '</h5>
                         <p class = "card-text">' . $row["contenido_del_post"] . '</p>
                         <a href = "ver.php?id=' . $row["id"] . '" class = "btn btn-primary">Ver</a>
                       </div> ';
            };
            ?>
        </div>

        <div class = "card">
            <?php
            $sql = "SELECT * FROM blogtp_1";
            $result = mysqli_query($conexion, $sql);

            while ($row = mysqli_fetch_array($result)) {

                echo  '<img class = "card-img-top" src = "imagen/' . $row["imagen_upload"] . '"/>
                       <div class = "card-body">
                         <h5 class = "card-title">' . $row["titulo_del_post"] . '</h5>
                         <p class = "card-text">' . $row["contenido_del_post"] . '</p>
                         <a href = "ver.php?id=' . $row["id"] . '" class = "btn btn-primary">Ver</a>
                       </div> ';
            };
            ?>
        </div>

        <div class = "card">
            <?php
            $sql = "SELECT * FROM blogtp_1";
            $result = mysqli_query($conexion, $sql);

            while ($row = mysqli_fetch_array($result)) {
                echo  '<img class = "card-img-top" src = "imagen/' . $row["imagen_upload"] . '"/>
                       <div class = "card-body">
                         <h5 class = "card-title">' . $row["titulo_del_post"] . '</h5>
                         <p class = "card-text">' . $row["contenido_del_post"] . '</p>
                         <a href = "ver.php?id=' . $row["id"] . '" class = "btn btn-primary">Ver</a>
                       </div> ';
            };
            ?>
        </div>
    </div>
</div>
</body>
</html>

Если бы вы могли мне помочь, я был бы очень признателен!

Достаточно одного цикла while. Не выкладывайте одну и ту же петлю 5 раз.

Kuldeep 10.06.2018 03:33

благодарю вас! Я сделал 5 циклов, потому что не могу понять, как отображать карточки (заголовок, контент и изображение) в горизонтальном ряду. Теперь они стоят в отдельном ряду по вертикали. Хочу их по 4 в ряд по горизонтали. Но спасибо за вашу помощь

vittoria daelli 10.06.2018 03:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно выполнить итерацию только один раз, а затем отобразить каждое сообщение на отдельной карточке.

Ваш index.php

<?php

require 'conexion.php';

$conexion = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);

function show_posts() {
    global $conexion;
    $sql = "SELECT * FROM blogtp_1";
    $result = mysqli_query($conexion, $sql);
    while ($row = mysqli_fetch_array($result)) {
        echo '<div class = "card">
                <img class = "card-img-top" src = "imagen/' . $row["imagen_upload"] . '"/>
                <div class = "card-body">
                     <h5 class = "card-title">' . $row["titulo_del_post"] . '</h5>
                     <p class = "card-text">' . $row["contenido_del_post"] . '</p>
                     <a href = "ver.php?id=' . $row["id"] . '" class = "btn btn-primary">Ver</a>
                </div> 
              </div>';
    };
}
?>

<!DOCTYPE html>
<html lang = "es" dir = "ltr">
<head>
    <meta charset = "utf-8">
    <title>Blog</title>
    <link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css"
          integrity = "sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin = "anonymous">
    <link rel = "stylesheet" href = "css/estilos.css">
</head>
<body>
<img src = "https://placeimg.com/720/200/arch" id = "banner"/>

<div class = "container" id = "principal">
    <h1>Bienvenido a mi blog!</h1>
    <a href = "new_post.php" class = "btn btn-primary btn-add">Agregar post</a>
    <h2>Ultimos 5 posts</h2>
    <div id = "card-list">
        <?php show_posts(); ?>
    </div>
</div>
</body>
</html>

ДА !!!!!! Спасибо !!! Имеет смысл превратить цикл while в функцию! Дуу программирование 101 !! Спасибо xanadev !!

vittoria daelli 10.06.2018 04:04

Другие вопросы по теме