2010-11-22 18 views
0

私は、検索結果が得られるいくつかの要素を持つプロパティ検索に関する検索フォームを持っています。場所、場所、都市、寝室などの番号 フォームが提出されたら、私は$ _postを使ってすべてのフォーム要素の値を取得できます。問題は、私がページングを実装するとき、次のページの要素の値をどのように取得するのでしょうか?私は何らかのグローバル変数/配列やセッションを使うべきですか? お勧めですか?php mysql検索クエリ

+0

これは、データの保存方法によって異なります。それは配列に詰め込まれていますか?データベースでは? – cdhowie

答えて

1

ある
select _fields_ from table where _where_ LIMIT _limit_
として
select count(1) from _table_ WHERE _where_
と第二として、第一1 。

たとえば、検索を実行している検索という名前の入力フィールドが1つあります。 ですので、各ページ設定リンクに$ _POST ['search']を渡す必要があります。 2ページ上の今

<a href='search.php?page=2&search="'. $_POST['search'].'"'>Page 2</a> 

、あなたは[ '検索'] $ _GETを取得し、クエリで

を使用することができます================== ===========================

セッションを使用する

投稿後に$ _Post値を取得し、セッションを開始してセッション変数に保存すると、セッションも使用されます。その場合、あなたは

session_start(); 
$_SESSION['search'] = $_POST['search']; 

は、今あなたが直接あなたのクエリで値を[「検索」] $ _SESSIONを使用することができるページネーションリンクにその値を渡すために持っていけません。

しかし、新しい検索のたびにこのセッション変数を空にします。したがって、検索フィールドに検索値がない場合、古い値でデータベース内を検索しません。

+0

最後のページを表示するにはどうすればよいですか?私の検索結果が7ページであれば、ページ1のページ2をどのように表示するのでしょうか?ページ7 – booota

+0

最初に検索条件のレコードの総数を計算します。それをページごとのレコードで割ります。だから、Total Pagesを表示させるでしょう。たとえばレコードの合計数= 30とします。ページあたりのレコード数= 10;したがって、ページは3になります。for(i = 1; i <= 3; i ++){Page $i }のリンクを表示するには、 –

0

あなたのmysql-queryにはLIMITを使うことをお勧めします。

もちろん
SELECT * FROM searchtable LIKE %%WHATEVER%% LIMIT 11,20 

が何をやろうとしている。

SELECT * FROM searchtable LIKE %%WHATEVER%% LIMIT 0,10 

これは、あなたがセージページ2 10. に結果を制限します:最初のページのような、あなたは10件の結果をしたい場合PHPからの制限として変数を設定します。 これが役立つことを願っています!

0

使用2つの検索クエリ、_limit_はあなたが持っている次のページに$ _POSTの値は、ページネーションリンクにその$ _POSTの値を渡すために取得するには$pagenum*$itemsPerPage, ($pagenum+1)*$itemsPerPage