Я пытаюсь отобразить 27 случайных изображений на своем веб-сайте, и для этого я сохранил источник изображения в своей базе данных.

    $query = "SELECT imgURL from my_db;";
    $stmt = $con -> prepare($query);
    $stmt -> execute();
    $imgURL = $stmt->fetchAll();

    $img_array = array();

    function getImgURL($imgURL,$arr_index,&$img_array){
        if(!in_array($arr_index, $img_array)){
           array_push($img_array,$arr_index);
           return strval($imgURL[$arr_index][0]);    
        } else{
            getImgURL($imgURL,rand(0,94),$img_array);
        }
     }

   for($i = 0 ; $i<=27; $i++){
       echo '<img class="img-fluid" src="'.getImgURL($imgURL,rand(0,94),$img_array).'">';
   }

Чтобы предотвратить дублирование, я создал массив ($ img_array), в который я вставлю индекс случайно сгенерированного изображения, а затем проверю, находится ли значение уже в массиве или нет.

Блок if работает нормально, но проблема возникает в блоке else, поскольку он возвращает "unknown" атрибуту src.

Here's a screenshot of the console window

0
SAMUEL 13 Июн 2020 в 00:15

1 ответ

Лучший ответ

Я пытаюсь отобразить на своем веб-сайте 27 случайных изображений

Вместо того, чтобы выполнять 27 запросов с дополнительной логикой приложения между ними, почему бы просто не перетасовать базу данных?

select imgURL from my_db order by rand() limit 27;

Этот параллельный запрос дает вам случайные 27 записей из таблицы my_db, что, кажется, именно то, что вам нужно, без какого-либо дополнительного кода на стороне приложения. Все, что осталось сделать, это получить результаты и отобразить их в вашем приложении.

2
GMB 12 Июн 2020 в 21:16