2016-05-11 5 views
0

mysqlの行を制限して最新の50行を制限する方法と、正確な行の数を知らずに次の50行を選択する方法mysqlの行を制限して最新の50行を選択する方法

つまり、テーブルの行数が増える可能性があります。さて、私はそれを明確に説明します:私はphp mysql htmlを使った文書管理システムのプロジェクトとしてWebアプリケーションを開発していました。すべてが設定されていますが、ドキュメントを取得しているうちに何千ものドキュメントがある可能性があります。

私のインフォメーションテーブルにあるすべてのドキュメントは、よく見ていなかったホームページで一度に取得しています。だから私は、最初のページに新しい50のドキュメントだけが置かれ、次に50が2番目に来るようにページを追加したいと思います。

しかし、どのように、私は、行の正確な数を毎回知って来て、私は、コードに新しい文書が追加されるすべての時間を変更することはできませんので... NUMROWSは、私が思うに有用ではないかもしれない...

は私をしてください助けて...

+0

でCREATION_DATEのDESCで作るとorberができ、あなたがやっていることを示して? – urfusion

+0

ここにテーブル構造を掲載してください。 –

+0

それについて記事を助けてくれることがあります。例えばhttp://code.tutsplus.com/tutorials/how-to-paginate-data-with-php--net-2928 – KiwiJuicer

答えて

0

あなたが探しているものはページネーションと呼ばれ、簡単なページ設定を実装する最も簡単な方法は、SQLクエリでLIMIT x , yを使用しています。すでに照会しているので、あなたは、次のクエリを続けなければならない場所がわから

  • elemmentsのammount:あなたは本当にあなたが持っている行の合計ammountを必要としない

    、あなただけの2つの数値を必要とします。

  • 各クエリを一覧表示する要素の数(例:50)を指定します。

あなたは、あなたのクエリLIMIT 0,50の末尾に挿入する必要があり、その後、あなたがどこかにすでに50個の要素を照会していることを記憶する必要がありますので、次の、あなたが最初の50個の要素を照会したいとしましょう制限をLIMIT 50,50(要素番号50から始まり、50個の要素を照会します)に変更します。

この順序は、エントリが挿入されたときのフィールドによって異なります。通常、テーブルを更新してフィールドcreated TIMESTAMP DEFAULT CURRENT_TIMESTAMPを追加してから、ORDER BY createdを使用してください。エントリから最新のものを探すために作成された正確な時刻が保存されるからです(AUTO_INCREMENT idがある場合は、同様に大きな値)。

これは、PHPとMySQLを使用して、このシステムの例のようになります。

$page = 1; 
if(!empty($_GET['page'])) { 
    $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT); 
    if(false === $page) { 
     $page = 1; 
    } 
} 

// set the number of items to display per page 
$items_per_page = 50; 

// build query 
$offset = ($page - 1) * $items_per_page; 
$sql = "SELECT * FROM your_table LIMIT " . $offset . "," . $items_per_page; 

私が最初にこのページネーションシステムを作るしようとしたとき、私はこのpostが本当に有用であることが分かったので、私はあなたがそれをチェックアウトすることをお勧めします(されますこの例のソースも同様です)。

これは役に立っています。申し訳ありませんが、あなたのコードがないので、私はあなたに良い例を提供していません。

+0

ありがとう...これは参考になるだろう...しかし、mysqlのテーブル..ドキュメント情報です追加され、新しい文書が追加されるたびに行が更新され、最初は最新の50を表示したいが、新しい文書が追加されるたびにmysqlテーブルの最後の数値が変更される...したがって、毎回mysqlクエリを変更できない – ram

+0

@ramタイムスタンプについて言えば、更新するたびにテーブルの構造を変更し、そのフィールドを追加するだけで、要素が最初に作成されたときの参照を持つように、タイムスタンプを追加したり変更したりする必要はありません。 – asurbernardo

0

PHPを使用してページ分割を検索& mysql。それはあなたの問題に便利になるかもしれません。

mysqlクエリが50行をフェッチするように制限するには、LIMITキーワードを使用します。 &が最後の行ID(50番目の行)を格納する必要があるため、次のページで51番目から100番目までの行を続けることができます。

あなたのコードで行ったことを投稿してください。 whitaveyoutried [dot] comを参照してください。

0

別のポストhttps://stackoverflow.com/a/2616715/6257039からチェックこの例を、あなたは、ID、またはあなたのクエリ

+0

実際に私のプロジェクトは、アップロード時間順のテーブルのすべての行を検索します... – ram

関連する問題