2

小さな問題があります。

CodeIgniterフレームワークを使用してPHPで完全なWebサイトをコーディングしました。私のモジュールの1つは検索モジュールです。これには、キーワードを含むテキスト入力と、フィルタリング基準を含む3つの選択リストが含まれています。

それは大丈夫です、私が何かを検索しているとき-結果のリストのページ付けは次のようなURLを介して行われます:

mysite.com/$keyword/$criteria1/$criteria2/$criteria3/$offset

チャームのように機能します。

しかし、自分の画像の1つ(画像ギャラリー)に入るときは、検索結果から次の画像と前の画像(この画像を入力した画像)に移動するオプションが必要です。

私は今このケースをこのように解決しています-「search_conditions」というセッションテーブルがあり、そこにキーワードの値と3つの基準を保存していますが、誰かが2番目のウィンドウを開いて他の何かを検索した場合、それは非常に快適ではありません。そこの?

次に、別のウィンドウまたはタブでのすべての検索で同じ基準が取得されます。これは、新しい検索を行うたびに、ユーザーがセッション値を上書きするためです。

私の次と前の機能:

public function next($count)
{
    $search = $this->session->userdata('search_conditions'); //getting session table and overwriting it

    $catid = isset($search['catid'])?$search['catid']:'0';
    $brandid = isset($search['brandid'])?$search['brandid']:'0';
    $prodid = isset($search['prodid'])?$search['prodid']:'0';
    $keyword = isset($search['keyword'])?$search['keyword']:'';

    $res = $this->search_model->main_search($keyword,  $catid, $brandid, $prodid, $count, 1);       
}



public function previous($count)
{
    $search = $this->session->userdata('search_conditions');

    $catid = isset($search['catid'])?$search['catid']:'0';
    $brandid = isset($search['brandid'])?$search['brandid']:'0';
    $prodid = isset($search['prodid'])?$search['prodid']:'0';
    $keyword = isset($search['keyword'])?$search['keyword']:'';

    $res = $this->search_model->main_search($keyword,  $catid, $brandid, $prodid, $count-2, 1);     

}

これは良くないように思われるので、他のもっと快適な解決策を私に勧めてもらえますか... :)

ありがとうございました!

4

2 に答える 2

2

$search_conditions変数にインデックスを追加します。

$search_conditions[1]['catid']
$search_conditions[1]['brandid']
...

次に、コントローラーまたは構成変数を使用して参照します。このようにして、1つのセッションで複数の検索条件を保存できるようにすることができます。

ただし、セッションでの検索条件の保存を中止することをお勧めします。代わりに、URIとともに渡すだけです。あなたが説明する場合、セッションデータは仲介者として機能します。あなたはそれを必要としません。ページネーションクラスを使用して、URIへの方向(または)ではなく、検索ページ番号を渡します。 URIが見苦しく見えるかもしれないことを心配しないでください-それはユーザーが何を検索するかにのみ依存し、それでも共有するのは友好的です。唯一の懸念は、GET文字列が制限された長さを拡張しないかどうかです。nextprevious

于 2012-08-06T22:31:11.820 に答える
2

next() および previous() 関数で URI からセグメントを取得します。codeigniter URL ヘルパーを使用します。これにより、さまざまな検索基準を変数として次のページに渡すことができるようになります。これにより、セッションを使用する必要もなくなります。

于 2012-08-06T21:58:56.700 に答える