Попытка вставить изображение из базы данных в новостной блог над каждой записью с использованием PHP

#php #html #mysql

#php #HTML #mysql

Вопрос:

Я создаю веб-сайт и хотел бы разрешить администратору добавлять изображение, которое извлекается из базы данных MySQL, и отображать его над текстом новостного блога, который также добавляется. Я могу заставить его отображать изображения, а также текст, но они сгруппированы вместе (изображения с изображениями и текст с текстом). Как я могу заставить мой веб-сайт отображать последнее изображение, введенное над последней добавленной текстовой записью?

 <?php
$sql = "SELECT imageId FROM output_images ORDER BY imageId DESC";
$result = mysqli_query($dbc, $sql);
?>

</BODY>
</HTML>
<div class="brown-container-fluid text-left">
    <div class="text-home">
        <h2><strong>Pine Lane News</strong></h2><br/>

        <?php
        if ($row = mysqli_fetch_array($result)) {
            ?>
            <div style="text-align:center;">
                <img style="max-width:300px; max-height:300px;"
                     src="imageView.php?image_id=<?php echo $row["imageId"]; ?>"/><br/>
            </div>
            <?php
        }

        $query = 'SELECT * FROM entries ORDER BY date_entered DESC';

        if ($r = mysqli_query($dbc, $query)) { // Run the query.

            // Retrieve and print every record:
            while ($row = mysqli_fetch_array($r)) {

                print
                    "<dl><dt><h3><strong>{$row['title']}</strong></h3></dt>
    <dd>{$row['entry']}<br /><br />n</dd></dl>";
            }

        } else { // Query didn't run.
            print '<p style="color: red;">Could not retrieve the data because:<br />' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>';
        } // End of query IF.

        mysqli_close($dbc); // Close the database connection.
        ?>
    </div>
</div>
  

Комментарии:

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

Ответ №1:

Кое-что, что я придумал очень быстро, не тестировалось.

 <?php
        while($row = mysqli_fetch_array($result)){

            echo '<div style="text-align:center;">';
            echo '<img style="max-width:300px; max-height:300px;"';
            echo 'src="imageView.php?image_id="'.$row["imageId"].'"/><br/>';
            echo '</div>';

            $query = 'SELECT * FROM entries ORDER BY date_entered DESC LIMIT 1';

            if ($r = mysqli_query($dbc, $query)) { // Run the query.
                while ($row = mysqli_fetch_array($r))

                {

                print
                    "<dl><dt><h3><strong>{$row['title']}</strong></h3></dt>
    <dd>{$row['entry']}<br /><br />n</dd></dl>";
            }

        } else { // Query didn't run.
            print '<p style="color: red;">Could not retrieve the data because:<br />' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>';
        } // End of query IF.

        mysqli_close($dbc); // Close the database connection.
        ?>
  

Комментарии:

1. Это привело бы к получению одной и той же строки из entries для каждой output_images записи.

2. @PatrickQ да, я не уловил этого раньше… ошибка новичка. Только что увидел ваш комментарий, и кажется, что это был бы единственный выход