Использование цикла PHP для извлечения данных MySQL и повторения до получения определенного количества - PullRequest
0 голосов
/ 01 мая 2018

У меня есть таблица базы данных, в которой хранятся детали изображения. Из этого я хочу получить ровно 6 изображений (только в виде строк) и отобразить изображения в качестве фоновых изображений на тегах рисунков.

Я пытаюсь получить 6 путей к изображениям, даже если в БД их всего 4. В этом случае я хотел бы вернуться назад, чтобы получить первые два ряда снова. Кроме того, если в запросе 10 строк, я бы хотел выбрать случайным образом только 6.

Пока у меня есть ...

Файл функций

// Slideshow images (Homepage)
function get_slideshow() {
    global $conn;
    $sql =  "SELECT id, caption, image, page_id 
                FROM slideshow
                ORDER BY id DESC";
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    $result = $stmt->get_result();
    $stmt->free_result();
    $stmt->close();
    return $result;
}

Index.php

$slideshow = get_slideshow();

<?php
    if ($slideshow->num_rows > 0) {
        while($row = $slideshow->fetch_assoc()) {
?>
        <figure style="background-image:url(<?php echo '/photos/'.$row['image']; ?>)"></figure>
<?php   
        }
    }
?>

Любая помощь была бы великолепна. Заранее спасибо:)

1 Ответ

0 голосов
/ 01 мая 2018

Удалите предложение ORDER BY из запроса. Как только вы получите набор результатов в массиве, используйте функцию shuffle в PHP. После того, как они были перетасованы, используйте цикл, чтобы сгенерировать изображение из первых 6 изображений из перетасованного массива.

В зависимости от того, сколько изображений находится в таблице базы данных, использование ORDER BY RAND потенциально может привести к очень плохому снижению производительности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...