2016-07-05 5 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を見つけて​​を比較して最後のページ条件をチェクしました。 $left_recメソッドは常に適合しません。

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

ceil()切り上げ次に高いinteger値を返す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使用する必要はありませんThatsなぜあなたのクエリ文字列にスペースを持っている。またhttp://php.net/manual/en/function.ceil.php

を読みます

<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

関連する問題