2014-09-06 4 views
3

Я пытаюсь создать сайт, который имеет фотогалерею, а не создавать базу данных CMS. Я пытаюсь использовать ее с использованием PHP и папок. На данный момент у меня есть сценарий, чтобы получить все изображения в папке и отображать их на странице, однако, вероятно, будет больше 100 фотографий. Я бы хотел использовать разбиение на страницы, чтобы разделить это на несколько страниц, но Я не знаю, как это сделать.Получить все фотографии из папки и paginate с помощью PHP

Вот сценарий, я в настоящее время работает:

<?php 
$folder = 'cms/gallery/photo/'; 
$filetype = '*.*'; 
$filename = HOW DO I GET THE NAME WITHOUT FILE TYPE 
$files = glob($folder.$filetype); 
foreach ($files as $file) 
{ 
    echo ' 

    <div class="galleryCellHolder"> 
     <div class="galleryCell"> 
      <a class="fancybox" rel="group" href="'.$file.'"><img class="galleryPhoto" src="'.$file.'" alt="'.$filename.'"></a> 
     </div> 
    </div> 

    '; 
} 
?> 

Q1 - Как извлечь имя файла без расширения файла? Q2 - Как это сделать, например, 24 изображения на страницу?

ответ

7

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

<?php 
$folder = 'cms/gallery/photo/'; 
$filetype = '*.*';  
$files = glob($folder.$filetype);  
$total = count($files);  
$per_page = 6;  
$last_page = (int)($total/$per_page);  
if(isset($_GET["page"]) && ($_GET["page"] <=$last_page) && ($_GET["page"] > 0)){ 
    $page = $_GET["page"]; 
    $offset = ($per_page + 1)*($page - 1);  
}else{ 
    echo "Page out of range showing results for page one"; 
    $page=1; 
    $offset=0;  
}  
$max = $offset + $per_page;  
if($max>$total){ 
    $max = $total; 
} 

Вы можете использовать функцию PathInfo, чтобы получить имя файла без расширения.

//print_r($files); 
    echo "Processsing page : $page offset: $offset max: $max total: $total last_page: $last_page";   
    show_pagination($page, $last_page);   
    for($i = $offset; $i< $max; $i++){ 
     $file = $files[$i]; 
     $path_parts = pathinfo($file); 
     $filename = $path_parts['filename'];   
     echo '   
     <div class="galleryCellHolder"> 
      <div class="galleryCell"> 
       <a class="fancybox" rel="group" href="'.$file.'"><img class="galleryPhoto" src="'.$file.'" alt="'.$filename.'"></a> 
      </div> 
     </div>   
     ';     
    }   
    show_pagination($page, $last_page); 

Используя следующую функцию Вы можете создать навигацию ссылки

function show_pagination($current_page, $last_page){ 
    echo '<div>'; 
    if($current_page > 1){ 
     echo ' <a href="?page='.($current_page-1).'"> &lt;&lt;Previous </a> '; 
    } 
    if($current_page < $last_page){ 
     echo ' <a href="?page='.($current_page+1).'"> Next&gt;&gt; </a> '; 
    } 
    echo '</div>'; 
} 

?> 
+0

Пожалуйста, укажите, как работает этот код. Код без каких-либо объяснений не подходит для формата Stack Overflow. – cybermonkey

+1

Я согласен Я добавлю некоторые комментарии, спасибо за ваше наблюдение – 2014-09-06 20:17:09

+0

Спасибо @KevinSanchez, это прекрасно подходит для ограничения количества изображений на странице 1, но не показывает разбиение на страницы. Когда я добавляю? Page = 2, он показывает те же изображения, что и на странице по умолчанию. Как сортировать разбивку на страницы? – user3177012

Смежные вопросы