За последние 24 часа нас посетили 18334 программиста и 1642 робота. Сейчас ищут 1542 программиста ...

Как сделать постраничную навгацию на php для галереи?

Тема в разделе "PHP для новичков", создана пользователем PickUp, 6 янв 2014.

  1. PickUp

    PickUp Новичок

    С нами с:
    12 ноя 2013
    Сообщения:
    21
    Симпатии:
    0
    Есть код - сканирует папку с картинками и выводит их в галерее. Картинок много, поэтому хочу сделать постраничную навигаию, чтобы при достижении количесвта картинок = 9, добавлялась сслыка на последующие странички...Как это реализовать?
    Вот код:
    Код (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. ?>
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Занести имена файлов в базу :)

    Ну или счётчик ставить.
     
  3. PickUp

    PickUp Новичок

    С нами с:
    12 ноя 2013
    Сообщения:
    21
    Симпатии:
    0
    Нашёл такой способ со счётчиком:
    "сканируем все файлы в массив scandir
    определяем общее количество count
    считываем переменную $_GET['page'] (например)
    считаем номер первой картинки ($page-1) * $perPage (кол-во на страницу)
    делаем срез массива array_slice
    в цикле выводим картинки
    определяем количество страниц ceil($total / $perPage)
    в цикле выводим ссылки на страницы"

    Только не могу понять, одну вещь.
    Как задать переменно $page, которую мы считываем, начальную страницу 1?
    Чтобы при открытии сайта у $page сразу было значение 1, а при переходам по ссылкам - 2,3...
    Просто если $page = 1 поставить перед циклом, то при переходе по страницам эта переменная и останется равной 1.
    Подскажите из какой это хотя бы рубрики?)
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Код (PHP):
    1. $page = isset($_GET["page"]) ? (int) $_GET["page"] : 1;
    2.  
    3. if ($page < 1 || $page > $count)
    4.     $page = 1;