@IvanKalinin

Как сделать постраничный вывод php?

Всем добра.
Нашел на просторах вот такой вариант вывода картинок для галереи PHP+jQuery.

$directory = 'gallery';	//название папки с изображениями
$allowed_types=array('jpg','jpeg','gif','png');	//разрешеные типы изображений
$file_parts=array();
  $ext='';
  $title='';
  $i=0;
//пробуем открыть папку
  $dir_handle = @opendir($directory) or die("There is an error with your image directory!");
while ($file = readdir($dir_handle))	//поиск по файлам
  {
  if($file=='.' || $file == '..') continue;	//пропустить ссылки на другие папки
 $file_parts = explode('.',$file);	//разделить имя файла и поместить его в массив
  $ext = strtolower(array_pop($file_parts));	//последний элеменет - это расширение
 $title = implode('.',$file_parts);	
  $title = htmlspecialchars($title);	
 $nomargin='';
  if(in_array($ext,$allowed_types))	
  {

  if(($i+1)%4==0) $nomargin='nomargin';	//последнему изображению в ряде присваевается CSS класс "nomargin"
  echo '
  <div class="pic '.$nomargin.'" style="background:url('.$directory.'/'.$file.') no-repeat 50% 50%;">
  <a href="'.$directory.'/'.$file.'" title="'.$title.'" target="_blank">'.$title.'</a>
  </div>';
 $i++;	
  }
  }
closedir($dir_handle);	//закрыть папку


Подскажите, пожалуйста такой момент, как сделать, чтобы если картинок в папке больше 12, то была бы постраничная навигация миниатюр?
  • Вопрос задан
  • 2921 просмотр
Пригласить эксперта
Ответы на вопрос 5
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Код - трэш!
Постраничный вывод:
if (($i-1)%12==0) {
//nextpage
}
Ответ написан
Комментировать
ilyaplot
@ilyaplot
PHP программист
blevokod.ru

Храните список файлов в бд и используте limit для пагинации
Ответ написан
Комментировать
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1. почитать про mvc
2. через readdir нормально никак, т.к порядок файлов не гарантирован и будет иногда изменяться
3. общая идея - формируете ссылку вида script.php?page=2
В коде в $_GET['page'] придет 2
соответственно делаете смещение.
Ответ написан
Комментировать
Rema1ns
@Rema1ns
и так сойдет
Можно костыльнуть. записать в в сессии массив названий картинок, и просто выводить его со смещением.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
1. Записать файлы в массив.
2. Отсортировать его.
3. выводить через цикл for с начальным и конечным значением, задаваемым переменными.

Для п.1 и для контроля расширений можно использовать glob()

<?php
$out   = array();
$files = glob("$directory/*.{jpg,png,gif}", GLOB_BRACE);
sort($files);
for ($i=$start; $i <= $end; $i++)
{
    $out[] = array(
        'title' = htmlspecialchars(basename($files[$i]));
        'file'  = $files[$i];
    );
}

В шаблон передаем массив $out и там его выводим.
Как получать стартовое и конечное значение и как выводить ссылки на страницы можно посмотреть здесь: phpfaq.ru/paginator#new
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы