2011-01-11 2 views
2

페이지 당 10 개의 레코드가 표시됩니다. 나는 현재 내가 함께 일하고 있어요 것을 가지고있는 변수 .. PHP : "이전"및 "다음"링크가 나타납니다.

$total = total number of records 
$page = whats the current page I'm displaying 

내 페이지 상단이 배치

...

if ($_GET['page'] == '') { $page = 1; } //if no page is specified set it to `1` 
else { $page = ($_GET['page']); } // if page is specified set it 
여기

내 두 개의 링크가 ...

if ($page != 1) { echo '<div style="float:left" ><a href="index.php?page='. ($page - 1) .'" rev="prev" >Prev</a></div>'; }  
    if (!(($total/(10 * $page)) < $page)) { echo '<div style="float:right" ><a href="index.php?page='. ($page + 1) .'" rev="next" >Next</a></div>'; } 

이제는 페이지가 '1'인 경우를 제외하고 매번 '이전'링크를 표시 할 수 있다고 생각합니다. 어떻게하면 "다음"링크가 마지막 페이지에도 나타나지 않는지 확인할 수 있습니까?

답변

2

함께 코드의 마지막 줄을 교체합니다. ceil 기능을 사용하십시오.

$page < ceil($total/10) 
+0

내가 그것을 :(나는 복잡한에 거라고 생각하지 않았는지 큰 감사 모르는 작동 PHPFreaks에 깔끔한 기사가 있습니다. 다시 한 번 감사드립니다! – daveomcd

1
!(($total/(10 * $page)) < $page) 

...이 말이 맞지 않다고 생각합니다.

$total이 1000 일 경우 - 99 페이지에서 1000/990 이고 99가 아니라면 또 다른 페이지가 표시됩니다.

10 * $page$total보다 크거나 같은지 확인하는 것이 좋습니다. 나머지가있는 경우는 별도의 페이지로 PAGECOUNT ($total/10)로 나누어 총 필요

if ($page*10 < $total) echo '<div style="float:right" ><a href="index.php?page='. ($page + 1) .'" rev="next" >Next</a></div>'; 
1

매김은 어딘가에 클래스의 어떤 종류를 생성하는 것이 가장, 또는 당신이 필요한 모든 것을 제공 적어도 일부 편의 기능 것을, 웹 프로젝트에 자주 등장 무언가이다.

$totalPages = ceil($total/10); 
if ($page < $totalPages)) { echo "<div style="float:right" ><a href="index.php?page='. ($page + 1) .'" rev="next" >Next</a></div>"; } 
+0

네 페이지 매김 클래스가 최선의 선택입니다. 여기에 많은 클래스가 있습니다. :) – Andreyco

1

:

여기에 유용 할 수 있습니다 사물의 사전을 반환하는 함수입니다. .. 이것은 단지 간단한 코드입니다 ... 나중에, 일부 페이지 범위 (현재 페이지 번호 앞뒤에 몇 페이지를 표시해야하는지 설정 ...)

1

// lets get total number of pages here 
$itemsPerPage = 10; 
$totalItems = 105; // just for example 
$pagesNo = ceil($totalItems/$itemsPerPage); 

// get the current page here... 
$current = (isset($_GET['page'])) ? (int)$_GET['page'] : 1; // if page is defined, use it, instead use 1 
$current = ($current > 0) ? $current : 1;     // if page was -1,-2... for instance, use 1 

// show us 'Prev' button 
echo ($current > 1) ? "<a href='".($current-1)."'>Prev</a>" : ""; 

// show current page NO 
echo $current; 

// show 'Next' button 
echo ($current < $pagesNo) ? "<a href='".($current+1)."'>Next</a>" : ""; 

은 다음과 같이해야합니다 당신은 마지막 줄에서 실수를

function pagination($numberItems, $perPage, $currentPage) { 
    $numPages = ceil($numberItems/$perPage); 
    return array( 
     'numberPages' => $numPages, 
     'start' => ($currentPage - 1) * $perPage + 1, 
     'end' => min($currentPage * $perPage, $numberItems), 
     'hasNext' => $page != $numPages, 
     'hasPrev' => $page != 1 
    ); 
} 
1

첫 페이지 또는 마지막 페이지에 있는지 감지하고 해당 조건에 대해 코드를 "보호"해야합니다.

if (/* not the first page */) { 
    // print the prev link 
} 

if (/* not the last page */) { 
    // print the next link 
} 

당신은 이미 페이지 = 1 이제 당신은 당신이 마지막 페이지 또는하지 않으면 결정해야하는 경우 (정수 나누기 또는 천장을 만들다()가는 방법이어야 함) 감지하는 코드가 있습니다.

SQL에서 PHP 결과 페이지의 경우

http://www.phpfreaks.com/tutorial/basic-pagination

관련 문제