Как показать последние 5 сообщений с изображением, когда вы загружаете его из базы данных MySQL? - PullRequest
0 голосов
/ 10 июня 2018

Общая цель - показать последние 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>

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

1 Ответ

0 голосов
/ 10 июня 2018

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

Ваш 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>
...