重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

一括で資料請求する方法についてアドバイスをお願い致します。
例えば保険のポータルで登録されてある保険会社の一覧表示ページがありますよね。

一覧表示ページでは保険会社名と資料請求用のチェックボックスがあります。

『資料請求する』というボタンをクリックすれば専用ページに移管しチェックされている
保険の一括資料請求できるというよくあるシステムなのですがページングで表示される場合に
前のページでチェックされていたチェックボックスの値を引き継いで渡す事はできますか?

可能であれば一度チェックされたセレクトボックスは次のページや前のぺーじへ戻っても
チェックされている状態を維持させたいと思っております。

URLは以下のようにページ番号のみ変化します。
exsample.com/list/ページ番号/

単純に1ページで全て表示されるのであれば処理も楽なのですがページングがある場合
どのようにすれば実装できるのか全くわかりません。詳しい方がいらっしゃいましたら
実装方法についてアドバイスをお願い致します。

A 回答 (1件)

私なりのノウハウです。




1.まず、ページ切り替えは POST メソッドでリクエストするようにします。
2.チェックボックスのチェックの有無は、$_POST の値を $_SESSION に保存する。
3.チェックボックスの echo 時に SESSION 変数に保存されている場合は、checked="checked" を echo する。


以下がサンプルのソースです。
かなり簡略して書いています。なおかつ未検証です。構文エラーがあるかも知れません。
実装する場合は、不正なリクエストはエラーを出すなり
無視する処理をしっかり入れてください。


// JavaScript 部分
function action(i){
document.forms.form1.page = i;
document.forms.form1.submit();
}

// フォーム部分
<from name="form1" method="post">
<input type="hidden" name="page" />
<ul>
<?php
for ($i = 0; i < 10; i ++){
?>
<li>
<label>
<input type="checkbox" name="checkbox[<?php echo($i); ?>]" value="1" <?if(isset($_SESSION[$i])){echo('checked="checked"');}?> />
チェックボックス<?php echo(($i + 1).'個目') ?>
</label>
</li>
<?php
}
?>
</ul>
</form>

// ページ切り替え部分
<a href="javascript:action(2)">2ページ目</a>
<a href="javascript:action(3)">3ページ目</a>
<a href="javascript:action(4)">4ページ目</a>
<a href="javascript:action(5)">5ページ目</a>

// POST値をSESSION変数に保存する部分
if(isset($_POST)){
while(true){
if(count($_POST['checkbox']) == 0){
break;
}

foreach($_POST['checkbox'] as $key => $value){
if($value != 1) continue;
$_SESSION[$key] = true;
}
break;
}
}
    • good
    • 0
この回答へのお礼

お返事ありがとうございます!
おかげ様でなんとか実装できそうです。ここから試行錯誤を繰り返してみたいと思います。

お礼日時:2009/11/24 22:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!