2011-05-17 12 views
0

マイページはPHP/codeigniterでコード化されています。フォームにはチェックボックスがいくつかあります。いくつかのチェックボックスを選択してフォームを送信すると、チェックボックスの値がコントローラに渡され、チェックボックスがチェックされているかどうかがチェックされ、チェックされたチェックボックスの値がすべて配列に入れられ、uri-> assoc_to_uriアレイ)。これは、検索エンジン用のフィルタをどのように記述したかです(より良い方法です)。今度はチェックボックスを使ってフォームを再表示すると、以前にチェックされたチェックボックスをもう一度チェックします。これどうやってするの?Codeigniterのチェックボックスと検索クエリ

私の最初のアイデアは、uri_> uri_to_assoc(#)を行い、関連するキー(つまり、1.2.3。)の値を見つけ、次に配列$ arrが、次のコードのようなものに爆発することです:

<input type="checkbox" name="price_range_4" value="<?php if($arr[4] != '') echo 'selected'; ?>"> 

もっと速く/より良い方法がありますか?

答えて

2

なぜセッションクラスを使用せず、配列をset_flashdata()に渡し、検索結果ページで検索してチェックボックスをチェックするのはなぜですか?

それはあなたが変更したい valueではありません
<input type="checkbox" name="price_range_4" value="<?php if($arr[4] != '') echo 'selected'; ?>"> 

、それはchecked属性です:

+0

次のリクエストの後にflashdataが期限切れになることに注意してください。通常のセッションデータはOKです。 –

+0

ええ、私はちょうど彼らがおそらく再び検索の一つの検索の後に残ると思ったので、私はフラッシュデータがあった理由は、両方の方法が正常に動作します。 – Darren

+0

このメソッドを使用すると、素晴らしい動作します! – Nyxynyx

1

Darren's answerに加えて、あなたは別のHTMLの問題を抱えています。

<input type="checkbox" name="price_range_4" value="my_value"<?php if ($should_be_checked) echo ' checked="checked"'; ?> /> 

あなたがForm helperを使用している場合は、このビットクリーナー作るためにform_checkbox()機能を使用することができます:

例:このような何かもちろん$should_be_checkedのうち

echo form_checkbox('price_range_4', 'my_value', $should_be_checked); 

になりますどのようにしてセッションデータ、$ _POSTデータ、または別の方法でそれを定義するかを決定します。

+0

それは、キャッチのためにありがとう:) – Nyxynyx