2008-10-16 6 views
7

동적으로 호출하고 디렉토리의 이미지를 표시하는 스크립트가 있습니다. 페이지 매김하는 가장 좋은 방법은 무엇입니까? 스크립트 내에서 변수를 통해 페이지 당 표시되는 이미지의 수를 제어 할 수 있기를 원합니다. 나는 URL varriables (ie - http://domain.com/page.php?page=1)를 사용하려고 생각하고있다. 그러나 이것에 대해 어떻게 가야할지 모르겠다.SQL없이 PHP 동적 페이지 매기기

도움 주셔서 감사합니다.

답변

9

페이지 매김은 SQL을 사용하거나 사용하지 않는 동일한 개념입니다. 기본 변수가 필요하면 원하는 내용을 만들 수 있습니다. 여기에 몇 가지 유사 코드가 있습니다.

$itemsPerPage = 5; 

$currentPage = isset($_GET['page']) ? $_GET['page'] : 1; 
$totalItems = getTotalItems(); 
$totalPages = ceil($totalItems/$itemsPerPage); 

function getTotalItems() { 
// since they're images, perhaps we'll scan a directory of images to determine 
// how many images we have in total 
} 

function getItemsFromPage($page, $itemsPerPage) { 
// function to grab $itemsPerPage based on which $page we're on 
} 

function getPager($totalPages, $currentPage) { 
// build your pager 
} 

희망을 시작하는 데 도움이됩니다.

+0

좋은 시작을 :) 감사를 해본 적이 있지만 http://www.webplicity.net/flexigrid/

는 galery 같은 애플 리케이션을위한 좋은 수 있습니다. 내일 내가 그걸로 무엇을 할 수 있는지 알게 될거야. – PHLAK

0

이미지의 이름을 01.jpg, 02.jpg로하면 페이지 매김이 더 쉽습니다. 그런 다음 glob을 사용하여 모든 이미지를 배열로 가져 와서 정렬합니다.

+0

각 페이지에서 같은 순서로 동일한 이미지 배열을로드한다는 의미입니다. 당신이 할 수있는 또 다른 일은 캡션 배열이 이미지 #에 의해 색인 된 캡션 .php 파일을 갖는 것입니다. – Galen

+0

나는 당신이 말하는 것을 얻지 만, 이미지가 반드시 그런 번호가 매겨지는 것은 아닙니다. – PHLAK

10

이것은 종종 페이지 매기기를 수행하는 데 사용하는 기능입니다. 희망이 도움이됩니다.

function paginate($page, $total, $per_page) { 
    if(!is_numeric($page)) { $page = 1; } 
    if(!is_numeric($per_page)) { $per_page = 10; } 
    if($page > ceil($total/$per_page)) $page = 1; 
    if($page == "" || $page == 0) { 
     $page = 1; 
     $start = 0; 
     $end = $per_page; 
    } else { 
     $start = ($page * $per_page) - ($per_page); 
     $end = $per_page; 
    } 

    $prev_page = ""; 
    $next_page = ""; 
    $all_pages = array(); 
    $selected = ""; 
    $enabled = false; 

    if($total > $per_page) { 
     $enabled = true; 
     $prev = $page - 1; 
     $prev_page = ($prev == 0) ? 0 : $prev; 

     $next = $page + 1; 
     $total_pages = ceil($total/$per_page); 

     $next_page = ($next <= $total_pages) ? $next : 0; 

     for($x=1;$x<=$total_pages;$x++) { 
      $all_pages[] = $x; 
      $selected = ($x == $page) ? $x : $selected; 
     } 
    } 

    return array(
     "per_page" => $per_page, 
     "page" => $page, 
     "prev_page" => $prev_page, 
     "all_pages" => $all_pages, 
     "next_page" => $next_page, 
     "selected" => $selected, 
     "start" => $start, 
     "end" => $end, 
     "enabled" => $enabled 
    ); 
} 

// ex: we are in page 2, we have 50 items, and we're showing 10 per page 
print_r(paginate(2, 50, 10)); 

이 반환됩니다

Array 
(
    [per_page] => 10 
    [page] => 2 
    [prev_page] => 1 
    [all_pages] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
      [3] => 4 
      [4] => 5 
     ) 
    [next_page] => 3 
    [selected] => 2 
    [start] => 10 
    [end] => 10 
    [enabled] => 1 
) 

당신이 다음 꽤 잘 매김 링크를 만들기 위해 무장 모든 데이터와 함께.

0

의심 스러울 때 javascript! 이것도 도움이 될 수 있습니다 : 나는 많은 이해, 그것은

+0

Nah ... Javascript를 벗어나려고 노력 중입니다. – PHLAK