Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как сделать постраничную навгацию на php для галереи?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
PickUp
Отправлено: 06 Января, 2014 - 23:22:09
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Есть код - сканирует папку с картинками и выводит их в галерее. Картинок много, поэтому хочу сделать постраничную навигаию, чтобы при достижении количесвта картинок = 9, добавлялась сслыка на последующие странички...Как это реализовать?
Вот код:
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. $directory = '_include/img/work/full/'; //название папки с изображениями
  3. $allowed_types=array('jpg','jpeg','gif','png'); //разрешеные типы изображений
  4. $file_parts=array();
  5.  $ext='';
  6.  $title='';
  7.  $i=0;
  8. //пробуем открыть папку
  9.  $dir_handle = @opendir($directory) or die("There is an error with your image directory!");
  10. while ($file = readdir($dir_handle))    //поиск по файлам
  11.  {
  12.  if($file=='.' || $file == '..') continue;      //пропустить ссылки на другие папки
  13. $file_parts = explode('.',$file);       //разделить имя файла и поместить его в массив
  14.  $ext = strtolower(array_pop($file_parts));     //последний элеменет - это расширение
  15. $title = implode('.',$file_parts);     
  16.  $title = htmlspecialchars($title);    
  17. $nomargin='';
  18.  if(in_array($ext,$allowed_types))     
  19.  {
  20.  if(($i+1)%9==0) $nomargin='nomargin';
  21.  //последнему изображению в ряде присваевается CSS класс "nomargin"
  22.  echo '
  23.  <li class="item-thumbs span3 design'.$nomargin.'" style="background:url('.$directory.'/'.$file.');">
  24.  <a class="hover-wrap fancybox" data-fancybox-group="gallery" title="'.$title.'" href="'.$directory.'/'.$file.'"'.$title.'">
  25.  <span class="overlay-img"></span>
  26.  <span class="overlay-img-thumb font-icon-plus"></span></a>
  27.  <img src="'.$directory.'/'.$file.'" alt="'.$signature.'">
  28.  </li>';
  29. $i++;  
  30.  }
  31.  }
  32. closedir($dir_handle);  //закрыть папку
  33. ?>
  34.  
 
 Top
DelphinPRO
Отправлено: 06 Января, 2014 - 23:31:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




сканируем все файлы в массив scandir
определяем общее количество count
считываем переменную $_GET['page'] (например)
считаем номер первой картинки ($page-1) * $perPage (кол-во на страницу)
делаем срез массива array_slice
в цикле выводим картинки
определяем количество страниц ceil($total / $perPage)
в цикле выводим ссылки на страницы
Ссылки такого вида:
PHP:
скопировать код в буфер обмена
  1. <a href="/gallery.php?page=3">3</a>


Вот и все. Откуда у всех столько затруднений с постраничкой?

PS. Если картинок ну очень уж много, то лучше хранить их список в БД, нежели сканировать директорию.

(Отредактировано автором: 06 Января, 2014 - 23:32:56)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
PickUp
Отправлено: 07 Января, 2014 - 13:12:40
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Спасибо большое)
Вроде как работает, только один вопрос:
DelphinPRO пишет:

считываем переменную $_GET['page'] (например)
считаем номер первой картинки ($page-1) * $perPage (кол-во на страницу)

Как задать переменной, ну нашей $page, которую мы считываем, начальную страницу 1?
Чтобы при открытии сайта у $page сразу было значение 1, а при переходам по ссылкам - 2,3...
Просто если $page = 1 поставить перед циклом, то при переходе по страницам эта переменная и останется равной 1.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB