2011-03-04 7 views
-1

특정 조건과 일치하는 행을 출력하는 SQL 쿼리가 있습니다. 이 프로세스에 페이지 매김을 추가하여 사용하기가 쉽습니다.PHP 페이지 매김 추가하기

내 과정이 같다 :이 페이지의 하한 아웃

  • 도 현재 페이지의 상한을 알아낼
  • 풀 (예 1 - - 20 21 40 등). 해당 행
  • 20 이상이있는 경우,
  • 목록 MySQL의 테이블에서 해당 행은 floor($totalRows/20) 페이지
  • 를 추가 ???
  • 매김

내 매김은 반 올바르게 작동하는 것 같지만 마지막 페이지는 (그것이 무엇이든간에)는해야 행의 양보다 하나 적은 나열합니다. 내 코드는 다음과 같습니다.

$page = $_GET["p"]; 
    $bL = (($page - 1) * 20) + 1; 
    $tL = $page * 20; 

    $total = mysql_num_rows(mysql_query("SELECT id FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE()")); 

    if($tL > $total) 
    { 
     $tL = (($page - 1) * 20) + ($total % 20); 
    } 

    $gotRows = "SELECT * FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE() ORDER BY retailerName LIMIT " . $bL . ", " . $tL; 

    //list all those rows 

    $numPages = floor($total/20) + 1; 
    echo "<p id='results'>" . $total . " result" . $plural . " &#183; Displaying " . $bL . " to " . $tL . " </p>"; 
    echo "</table>"; 
    $pG = 1; 
    while($pG <= $numPages) 
    { 
     if($pG == $page) 
     { 
      echo $pG; 
     } 
     else 
     { 
      echo "<a href='zone?z=" . $zone . "&p=" . $pG . "'>" . $pG . "</a>"; 
     } 
     if($pG != $numPages) 
     { 
      echo "&#183"; 
     } 
     $pG = $pG + 1; 
    } 

어떤 도움이 필요합니까?

편집 : 신경 쓰지 마라, 나는 행 문제를 해결했다. 그러나 잘못된 페이지 링크의 문제점은 여전히 ​​계속됩니다. 1 페이지에서 올바르게 작동합니다. "1"은 링크가 아니며 "2"는 링크입니다. 그러나 페이지 2에서는 링크로 "1"만 표시됩니다. "2"가 표시되지 않습니다.

+0

PHP/MySQL 페이지 매김을 처리하는 데있어서 많은 질문이 있습니다. 이미 살펴 봤습니까? – drudge

+0

페이지 매김이 제대로 작동합니다. 페이지 링크 버그를 수정하려고합니다. – AKor

답변

1

이 논리는 나를 혼란스럽게합니다. $tl이 합계보다 크면 단순히 합계와 같지 않습니까?

if($tL > $total) 
{ 
    $tL = (($page - 1) * 20) + ($total % 20); 
} 

는 대신 왜 안 : 또한

$tL = ($tL > $total) ? $total : $tl; 

, 나는 총 대신 mysql_num_rows을 찾기 위해 SQL을 사용합니다. 좀 더 안정적이어야합니다 (특히 오래된 MySQL 확장을 사용하지 않는 경우). 어쩌면 올바른 총계를 리턴 할 수도 있습니다.

SELECT COUNT(id) FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE() 

이 외에도 나는 잘못된 행 수가 설명 될 수있는 것이 분명하지 않습니다.

+0

나는 그것을 바꿨다. 나는이 질문을 제출 한 직후에 행 기능을 잘 사용했다. 이제는 내 유일한 문제는 페이지 링크를 생성하는 루프가 부적절하게 작동하고 있다는 것입니다. – AKor