2016-07-05 2 views
-2

다음 코드를 사용하여 PHP와 MySQL을 사용하여 페이지 매김을 구현하려고합니다. 코드를 효과적으로PHP와 MYSQL을 사용하여 페이지 매김을 구현하는 방법

작동되지 않도록 페이지 변수의 값을 얻을 수

내가 인터넷에서 도움을 촬영하고 코드를 변경

하지만 당신은 어디 프로그램에서 오류가 나에게 제안 할 수 또는 어떻게 얻을 수 있습니다 페이지 변수 값 이 프로그램은 PHP와 MYSQL db를 사용하여 페이지 매김을 구현하는 것만으로 간단합니다. 코드는 다음과 같습니다.

<html> 

<head> 
    <title>Paging Using PHP</title> 
</head> 

<body> 
    <?php 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = 'root123'; 

    $rec_limit = 10; 
    $conn = mysql_connect($dbhost, $dbuser, $dbpass); 

    if(! $conn) { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db('test_db'); 

    /* Get total number of records */ 
    $sql = "SELECT count(cinno) FROM register_data "; 
    $retval = mysql_query($sql, $conn); 

    if(! $retval) { 
     die('Could not get data: ' . mysql_error()); 
    } 
    $row = mysql_fetch_array($retval, MYSQL_NUM); 
    $rec_count = $row[0]; 

    if(isset($_GET{'page'})) { 
     $page = $_GET{'page'} + 1; 
     $offset = $rec_limit * $page ; 
    }else { 
     $page = 0; 
     $offset = 0; 
    } 

    $left_rec = $rec_count - ($page * $rec_limit); 
    $sql = "SELECT cinno ". 
     "FROM register_data ". 
     "LIMIT $offset, $rec_limit"; 

    $retval = mysql_query($sql, $conn); 

    if(! $retval) { 
     die('Could not get data: ' . mysql_error()); 
    } 

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { 
     echo "Cin No :{$row['cinno']} <br> "; 

    } 

     echo "$page"; 
    if($page > 0) { 
     $last = $page - 2; 
     echo "<a href = \"$_PHP_SELF?page = $last\">Last 10 Records</a> |"; 
     echo "<a href = \"$_PHP_SELF?page = $page\">Next 10 Records</a>"; 
    }else if($page == 0) { 
     echo "<a href = \"$_PHP_SELF?page = $page\">Next 10 Records</a>"; 
    }else if($left_rec < $rec_limit) { 
     $last = $page - 2; 
     echo "<a href = \"$_PHP_SELF?page = $last\">Last 10 Records</a>"; 
    } 

    mysql_close($conn); 
    ?> 

    </body> 
</html> 
+0

URL의'page = $ page'에있는 공백을 제거하십시오. 다른 누군가는 아마도 mysql을 사용하지 말라고 말할 것이지만 mysqli는 사용하지 않을 것이다. 그것들을 들어라. – Solarflare

+0

당신은'php-5.5','php-5.6','php-7' 태그로 태그를 붙 였으므로 코드에서 사용하고있는 mysql_xxx() 함수는 5.5에서 더 이상 사용되지 않습니다 5.6이며, PHP 7.0에서 완전히 삭제되었습니다. 대신 PDO 라이브러리에 대해 알아야하고이를 사용하여 코드를 다시 작성해야합니다. – Simba

+0

또한'$ _GET { 'page'}'은 잘못된 구문입니다. '$ _GET'는 배열이므로 중괄호를 사용하지 않고 대괄호를 사용합니다. – Simba

답변

0

$_PHP_SELF 소리가 잘못 들립니다. $_SERVER['PHP_SELF'] 또는 문자열을 사용해야합니다. ${_SERVER['PHP_SELF']}

1

$total_page을 찾은 다음 $page == $total_page을 비교하여 마지막 페이지 조건을 확인했습니다. $left_rec 방법이 항상 적합하지 않습니다.

// $left_rec = $rec_count - ($page * $rec_limit); not always give correct result 
     $total_page = ceil($rec_count/$rec_limit); 

ceil()

는 반올림하여 다음으로 높은 integer 값을 반환하는 PHP 함수입니다. 추가 정보를 원하시면 http://php.net/manual/en/function.ceil.php

은 또한 당신이 페이지 값을 얻을 수없는 이유를 쿼리 문자열 그게 전부에 공백이 있고 단순히

echo "<a href = '?page=$page'>Next 10 Records</a>"; or echo "<a href = 'index.php?page=$page'>Next 10 Records</a>"; if the code is in index.php 

가 // 전체 코드이를 사용하여 쓸 수 있습니다 당신이 $_PHP_SELF를 사용할 필요가 없습니다 읽기

<html> 

<head> 
    <title>Paging Using PHP</title> 
</head> 
<body> 
    <?php 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = 'root123'; 
    $rec_limit = 10; 
    $conn = mysql_connect($dbhost, $dbuser, $dbpass); 

    if(!$conn) { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db('test_db'); 

    /* Get total number of records */ 
    $sql = "SELECT count(cinno) FROM register_data"; 
    $retval = mysql_query($sql, $conn); 

    if(!$retval) { 
     die('Could not get data: ' . mysql_error()); 
    } 
    $row = mysql_fetch_array($retval, MYSQL_NUM); 
    $rec_count = $row[0]; 

    if(isset($_GET['page'])) { 
       $page = $_GET['page']; 
     $offset = $rec_limit * ($page - 1); 
    }else { 
     $page = 1; 
     $offset = 0; 
    } 

     // $left_rec = $rec_count - ($page * $rec_limit); not always give correct result 
     $total_page = ceil($rec_count/$rec_limit); 
     $sql = "select cinno from register_data LIMIT $offset, $rec_limit"; 
    $retval = mysql_query($sql, $conn); 

    if(! $retval) { 
     die('Could not get data2: ' . mysql_error()); 
    } 

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { 
     echo "Cin No :{$row['cinno']} <br> "; 

    } 

     if($page >1 && $page != $total_page) { 
      $last = $page - 1; 
      $page++;    
      echo "<a href = '?page=$last'>Last 10 Records</a> |"; 
      echo "<a href = '?page=$page'>Next 10 Records</a>"; 
     }else if($page == 1) { 
      $page++; 
      echo "<a href = '?page=$page'>Next 10 Records</a>"; 
     }elseif($page == $total_page){ 
       $last = $page - 1; 
       echo "<a href = '?page=$last'>Last 10 Records</a>"; 
      } 



    mysql_close($conn); 
    ?> 

    </body> 
</html> 

또한 mysqli 또는 PDO (보다 안전한)를 사용하십시오;

+0

@adesh singh 시도해보고 작동 여부를 알려주세요. – user1234

관련 문제