2016-12-06 7 views
0

私は自分のウェブページ上のデータベース(Mysql)からデータを表示するためのPHPスクリプトを作成しています。スクロールを避けるため、すべての情報を1つのページに表示する必要はありません。しかし、私は少数しか表示せず、残りのページに移動するためにページ番号を使用したいと思います。私はページ番号を作成することができましたが、まだすべての情報が1ページに表示されています。以下は私のコードです:ウェブページでページ番号を作成する方法

<?php 
    include('./includes/DB_Config.php'); 
    $status = 1; 
    // Set number of Post per page for navigation        
    $post_per_page = 2; 
    if (isset($_GET['page'])) 
     { 
      $startP = ($_GET['page'] - 1) * $post_per_page; 
    } 
    else 
    { 
     $startP = 0; 
    } 
    $post = mysqli_query ($mySQL_Conn, "SELECT * FROM BlogPost WHERE status = '$status'"); 
    // Fetch Data or number of rows 
    $dataRw = mysqli_num_rows($post); 
    $pages = $dataRw/$post_per_page;  
    if ($dataRw == 0) 
    { 
     $_SESSION['NoPost'] = "No Post Found!"; 
     } 
    else 
    { 
     unset($_SESSION['NoPost']); 
     //$pages = ceil($dataRw/$rows_per_page); 
     //$pages = array_slice($dataRw, $startP, $post_per_page);      
     while ($data = mysqli_fetch_array($post)) //Fetch data in array 
     { 
      //Assign data to variabes  
      $name = $data['blogger_Name'];      
      $postDate = $data['dateTime']; 
      $blogpost = $data['blog_message']; 
      $date = strtotime($postDate); 
      ?> 
      <p> <span><?php echo $_SESSION['NoPost'] ; ?> </span></p> 
      <p> <span>By:</span><?php echo $name; ?> </p> 
      <p> <span>Posted On: </span> <?php echo date("j F Y", $date); ?> </p> 
      <p> <span>Post: </span><?php echo $blogpost; ?> </p> 
      <?php 
      } 
    } 
    ?> 
    <hr> 
    <?php 
    for ($currentpage = 0; $currentpage < $pages; $currentpage++) 
    { 
     ?> 
      <span><a href="?page=<?php $currentpage + 1; ?>"> <?php echo $currentpage + 1; ?></a> </span> 
     <?php 
    } 
?>     
+1

MySQLからデータをどのように取得していますか?あなたはクエリに制限を入れていないように思えます – dpp

+1

FYI:呼び出されるページネーション*グーグルリングはおそらく役に立ちます –

+0

PHP、HTML、SQLを混在させています。あなたはそれらを使用しています。 –

答えて

0

あなたが達成しようとしていることは、非常に一般的なパターンであり、ページネーションと呼ばれています。

mysqlクエリでLIMITOFFSETを使用すると、データの特定のサブセットのみを取得できます。これを基本ページ付けに使用できます。

たとえば、1ページに50の結果を表示し、そのユーザーが3番目のページにある場合、LIMITを50に、OFFSETを2 * 50(100)に設定します。最初のページはオフセットです0となるので、ページを1つ減算します。

次のSQLクエリを使用すると、特定のページのデータのサブセットを取得できます。

"SELECT * FROM Users LIMIT $num_results OFFSET ".(($page_num-1)*$num_results); 

あなたはユーザーテーブルからの総行数を取得し、$ NUM_RESULTSで割ることによって可能に総ページ数を取得することができます。出力スクリプトにページ番号として使用されるGET urlクエリパラメータを使用させることをお勧めします。

関連する問題