2012-02-02 3 views
2

検索項目ページにページング機能を追加しようとしています。私はポケットベルでページ番号をクリックすると私はUL ハイパーリンクでページを再ロードした後にフォームの値を保持する

として
echo '<ul>'; 
for($i=1; $i<=$pageCount; $i++) 
{ 
    echo '<li><a href="' . $_SERVER['PHP_SELF'] . '?page=' . $i . '">' . $i . '</a>'; 
} 
echo '</ul>'; 

にページャを追加して、私はページ番号が

if (isset($_GET['page'])) 
{ 
    $pageNo = $_GET['page']; 
} 

でクリックを受けることができますが、私は入力したテキストを保持することはできませんユーザがアイテムを検索する。私は$_POST['txtSearchText']を試しましたが、ページをリフレッシュした後に値を保持しません。

値を保持する方法はありますかセッションを使わずにハイパーリンクをクリックしてページを自動読み込みしましたか?

答えて

6

あなたのリンクは、検索パラメータで隠しフォームを送信するか、ページ番号とともに送信するクエリ文字列のパラメータとしてシリアル化します。

最初のケースではJavascriptが必要です(実際には、 "A"リンクはフォームの非表示フィールドに適切なページ番号を設定してフォームを送信します)。 2番目のケースでは、それを必要としませんが、クエリ文字列は人にやさしくありません。

それ以外の場合は、セッションがあります(セッションオブジェクトに検索結果を保存し、複数のページを一度に開くことができるようにページングリンクにトークンを使用することもできます)。

2

あなたがGETリクエストを使用している場合は、あなただけのリンクに検索クエリを追加することができます。

echo '<ul>'; 
for($i=1; $i<=$pageCount; $i++) 
{ 
    echo '<li><a href="' . $_SERVER['PHP_SELF'] . '?page=' . $i . '&query='.url_encode($search_query).'">' . $i . '</a>'; 
} 
echo '</ul>'; 

あなたはPOSTリクエストを使用したい場合、あなたは@Palantirが言ったようにフォームを送信またはAJAXを使用する必要があります。

2つの異なるクエリが2つのブラウザタブで開かれたときに、衝突の可能性があるために検索クエリを保存するセッションを使用しません。

0

GETベースの検索ページングでは、「Params」という名前のクラスを作成します。このクラスには、readURLParamsとgenerateURLParamsなどのメソッドが含まれています。また、検索用語、場所、ページ番号、フィルターなどの潜在的なパラメーターごとのメンバー変数も含まれています。ページが読み込まれると、まず、すべてのGETパラメーターをオブジェクトのメンバー変数に読み込むreadURLParamsを実行します。ページング機能のリンクを作成する準備ができたら、genereateURLParamsを実行します。これにより、ページングリンクに追加するURL文字列が作成されます。

これで、すべてのURLパラメータを手動で追跡する必要がなくなり、メソッドをPOSTや他の形式のパラメータ渡しに変更する場合は、クラスに機能を追加できます。

関連する問題