2014-09-06 70 views
3

我試圖建立一個網站,有一個照片庫,而不是建立一個數據庫CMS我試圖與PHP和文件夾的使用。目前,我有一個腳本來獲取文件夾中的所有圖像,並將它們顯示在一個頁面上,但由於可能會有超過100張照片,我希望使用分頁功能將這些文件分割成幾頁,但我不知道如何做到這一點。從文件夾和分頁與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 2014-09-06 20:14:38

+1

我同意我會添加一些意見,感謝您的觀察 – 2014-09-06 20:17:09

+0

感謝@KevinSanchez,這適用於限制頁面1上的圖像數量,但不顯示分頁。當我添加?page = 2時,它會顯示與默認頁面上顯示的圖像相同的圖像 - 如何對分頁進行排序? – user3177012 2014-09-07 09:59:04