从文件夹中获取所有照片并使用PHP进行分页

时间:2014-09-06 18:48:42

标签: php pagination

我正在尝试构建一个拥有照片库的网站而不是构建数据库CMS我正在尝试使用PHP和文件夹。目前我有一个脚本可以将所有图像放在一个文件夹中并将它们显示在一个页面上,但是因为可能超过100张照片,我想使用分页来拼写这几页但是我不知道该怎么做。

这是我目前正在运行的脚本:

<?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张图片进行分页?

1 个答案:

答案 0 :(得分: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>';
}

?>