Общая цель - показать последние 5 сообщений с их изображением при загрузке в базу данных MySQL. У меня 4 файла:
Основная проблема, которую я не могу понять, - почему я вижу несколько карточек в 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>
Если бы вы могли мне помочь, я был бы очень признателен!
благодарю вас! Я сделал 5 циклов, потому что не могу понять, как отображать карточки (заголовок, контент и изображение) в горизонтальном ряду. Теперь они стоят в отдельном ряду по вертикали. Хочу их по 4 в ряд по горизонтали. Но спасибо за вашу помощь






Вам нужно выполнить итерацию только один раз, а затем отобразить каждое сообщение на отдельной карточке.
Ваш 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 !!
Достаточно одного цикла while. Не выкладывайте одну и ту же петлю 5 раз.