Я пытаюсь получить изображения из папки с помощью glob (), и я хочу, чтобы она была разбита на страницы, поэтому она отображает только 3 изображения на страницу.
От копания в Интернете и здесь, на SO, у меня есть код ниже. Проблема в том, что он только вытягивает три изображения из каталога, и когда я нажимаю на следующей странице, он показывает те же 3 изображения.
Каким будет лучший способ получить разные изображения для каждой страницы с помощью glob?
$imagesDir = 'uploadedImages/thumbs/*'; $itemsPerPage = 3; $currentPage = isset($_GET['page']) ? $_GET['page'] : 1; $totalItems = getTotalItems($imagesDir); $totalPages = ceil($totalItems / $itemsPerPage); getItemsFromPage($currentPage, $itemsPerPage, $imagesDir); getPager($totalPages, $currentPage); //counts the number of files in the dir function getTotalItems($imagesDir) { $numImages = count(glob($imagesDir)); return $numImages; } //gets the files from the dir function getItemsFromPage($page, $numItems, $dir) { $x = 0; //get the first 3 items from the foreach(glob($dir) as $image) { if($x < $numItems) { echo "<li><img src=\"$image\" alt=\"$image\" /></li>"; $x++; } else { break; } } } //creates the pages and the links function getPager($totalPages, $currentPage) { // if we're not on the first page, show the previous page and first page links if($currentPage > 1) { $prevPage = $currentPage - 1; echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'><<</a> "; echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevPage'><</a> "; } $range = 1; // show what page we're on and the page numbers surround this page for($x = ($currentPage - $range); $x < ($currentPage + $range) +1; $x++) { if(($x > 0) && ($x <= $totalPages)) { if($x == $currentPage) { echo " [<b>$x</b>] "; } else { echo " <a href='{$_SERVER['PHP_SELF']}?currentPage=$x'>$x</a> "; } } } // if we're not on the last page show the next page and last page links if($currentPage != $totalPages) { $nextPage = $currentPage + 1; echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextPage'>></a> "; echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalPages'>>></a> "; } }
function getItemsFromPage($page, $numItems, $dir) { $offset = ($page - 1) * $numItems; $x = 0; //get the first 3 items from the foreach(glob($dir) as $image) { if($x < $offset) { $x++; } elseif($x < $numItems + $offset) { echo "<li><img src=\"$image\" alt=\"$image\" /></li>"; $x++; } else { break; } } }
проблема заключается в функции getItemsFromPage. Он всегда начинается с $x = 0;
а $ x должен быть разным, зависит от номера страницы
если кто-то хочет получить имя файла изображения без расширения файла use pathinfo
– возвращает информацию о пути к файлу.
$dirname = "cards/"; $images = glob($dirname . "*.png"); foreach ($images as $image) { $title = pathinfo($image); echo $title['filename']; }