2012-07-01 39 views
-2

一個網站在一個目錄中有400多張圖片。我想在每一頁上以12列出它們。我怎樣才能做到這一點?這是我的實際代碼:400多張圖片的PHP分頁

<!doctype html> 
<html lang="hu"> 
    <head> 
     <title>Amatőr</title> 
     <meta charset="utf-8"/> 
    </head> 
    <body> 
     <h2><a href="../php/upload_picture.php" style="font-size:15pt; color:#ff00e8; text-decoration: none;">Vannak jó képeid? Töltsd fel őket és kikerülhetnek az oldalra!</a></h2> 
     <article> 
      <header> 
       Amatőr Lányok 
      </header> 
      <div id="kepek"> 
       <?php 
       $imgdir = '../img/blog/img/amator/'; //Pick your folder 
       $allowed_types = array('png','jpg','jpeg','gif'); //Allowed types of files 
       $dimg = opendir($imgdir);//Open directory 
       while($imgfile = readdir($dimg)) 
       { 
        if(in_array(strtolower(substr($imgfile,-3)),$allowed_types) OR 
         in_array(strtolower(substr($imgfile,-4)),$allowed_types)) 
       /*If the file is an image add it to the array*/ 
        {$a_img[] = $imgfile;} 
       } 


       $totimg = count($a_img); //The total count of all the images 
       //Echo out the images and their paths incased in an li. 
       for($x=0; $x < $totimg; $x++){ echo "<a onclick='Lightbox.start(this, false, false, false, false); return false;' rel='lightbox[amator]' href='" . $imgdir . $a_img[$x] . "'><img class='kep_listaz' width='200px' height='160px' src='" . $imgdir . $a_img[$x] . "' /></a>";} 
       ?> 
      </div> 
     </article> 
    </body> 
</html> 

Thanks! 

回答

0

所以這實際上是更多的數學問題。 您將需要獲取圖像的總數,然後除以每頁圖像的最大數量(確保ceil() it)。

您現在需要查看所有這些圖像的最大頁數。你現在需要做的是確定你想要page = 1/page = 2等還是作爲開始和結束。然而,兩者都相對容易,因爲您需要做的頁面是

$page = (int)$_GET['page']; 
$start = $page * $max_items_per_page; 
$end = $start + $max_items_per_page; 

這樣可能會節省成本。還要添加額外的代碼,以確保您不會超出所請求的頁面範圍。

現在,這是一個獲取文件數組(我建議你使用glob())並使用array_slice()從頭到尾的問題。

最後只是有一個上一頁/下一頁,或列出所有(或部分)頁面。下一步和上一步的操作與添加/刪除1至$page一樣簡單,即$next = $page + 1;$prev = $page-1;。再次,對於這兩種情況,請仔細檢查你是否超出界限。可能最好不要顯示下一個/上一個,如果他們超出界限。

0

有兩種方法可以對這種數據進行分頁:在您發送全部數據的前端,JavaSctipt僅向用戶顯示一部分,或者僅在後端顯示頁面一次一部分,你重新加載整個頁面以獲得更多。

最快的方式得到它的工作是利用後端方法:

您之前的循環添加$page = isset($_GET['page']) ? $_GET['page']-1 : 0;

改變回路的參數$x=$page*12; $x < $totimg && $x < ($page+1)*12; $x++

然後你可以通過添加操作頁面?page=3到網址

你也想添加一些錯誤處理,因爲提交了一個無效的頁碼。

+0

非常感謝,問題是,這個頁面是通過ajax傳遞給瀏覽器的,所以url並沒有真正改變。如何添加?page = x這種方式? – trisztann

+0

沒有理由不能更改ajax調用的url,或者如果ajax是帖子,可以將param作爲數據發送。 – swider

+0

這是我目前的ajax調用:http://pastebin.com/BFvyS1jF ..我做對了嗎?我在網址的末尾添加了?page = 1。另外我如何添加頁面導航的圖像下面的ajaxed內容?謝謝! – trisztann