- ベストアンサー
チェックボックスの値処理PHP+MySQL
PHPでMySQLのDB情報をHTML出力して、表の各行にチェックボックスを付けて仮に表がHTMLで10ページあったとして、1ページ目のチェックボックスの値を保存して、ランダムに各ページを見て、また1ページ目に戻るとチェックボックスが保存した状態になっているという事はできるでしょうか? javascriptを組み合わせてでないとムリでしょうか? どなたか教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>チェックをビットでとっとけば省スペースできる #2の方も説明されていますが、一応(それなりの)解説をしますね。 チェックボックスは、チェックされているかいないかだけなので、ビット(2進数で1か0か)で表すことができます。 本来であれば、true,falseのブーリアン型にするのでしょうが、(PHPではサイズは規定されてはいないけれども)多分、あるかないかの情報を保持するのにマシンの基本サイズ(32ビット:4バイト)が使われると思います。 なので、1ページの行数×ページ数×4バイト必要だと思います。 しかし、4バイトあれば(PHPで符号無し整数が使えないとしても)31個のチェックされているかいないかを保持することができます。 なので、例えば1ページの行数が30行だとしたら ページ数×4バイトのサイズで情報を保持できます。 まあ、その辺が省スペースということですね。 ただまあ、直接的ではないので、面倒ではありますが、保持する量が大きくなると(クッキーなど多分セッションも)データが保持できなくなると思いますので、保持するデータが多くなる場合には考えてみる価値はあるかもしれません。 -------------- 設定と取り出し 設定 for($i=0;$i<30;$i++){ if($そのページのチェックボックス[$i]==true){ $チェックリスト[ページ番号] |= pow(2,$i); } } 取り出し for($i=0;$i<30;$i++){ $そのページのチェックボックス[$i]=(0!=$チェックリスト[ページ番号] & pow(2,$i)); } 実際には試してないけど、てな感じかと
その他の回答 (2)
- GanID
- ベストアンサー率0% (0/2)
チェックをビットで取るとは、チェックボックスの返答はon又はoffですよね。on=THRU=ビット1/off=FLASE=ビット0になるので、THRUかFLASEでセッションを確保するとの意味と思います。 チェックボックスの値がPOSTバックされた時に値をそのままセッションに確保してHTMLに埋め込む方が楽ですよ。 HTML例) <input type="checkbox" name="post_ck1" value="<?=$_session["ck1"]?>"> php例) $_session["ck1"]=$post_ck1; 複数のページに跨った場合はセッション名の重複に注意しましょう。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
セッションで状態をとっとく 単純な配列でもいいと思うけど チェックをビットでとっとけば省スペースできる
補足
チェックをビットでとっとけば省スペースできる とはどんな感じでしょうか? よかったら詳しめに教えてください よろしくお願いします。