いつもお世話になっております。
チェックボックスの値を
<input type="checkbox" value="ok" name="check[]">
として配列で渡し、ここで選択された値をforeachで回してvalueがokの場合は対応するカラムにokを挿入しています。
このやり方では、例えばチェックボックスでチェックさせたい項目が100個あった場合はチェック結果を格納するテーブルに
ck1 ck2 ck3 ck4 ck5 ck6......ck99 ck100
のように100個カラムを作る必要があります。
100個作るのが面倒・・・というわけでは無く、このやり方で良いのだろうかと疑問に感じてきました。
大量のチェックボックスを処理する場合、他に良いテーブル構造や方法などありましたら教えていただけるとうれしいです。
No.1ベストアンサー
- 回答日時:
>foreachで回してvalueがokの場合は対応するカラムにokを挿入
という運用方法であれば
><input type="checkbox" value="ok" name="check[]">
では実現できません。
たとえば
<input type="checkbox" value="1" name="check[]">
<input type="checkbox" value="2" name="check[]">
<input type="checkbox" value="3" name="check[]">
などのようにvalue値で判断するか、
<input type="checkbox" value="1" name="check[1]">
<input type="checkbox" value="1" name="check[2]">
<input type="checkbox" value="1" name="check[3]">
のようにvalueは適当にいれておいてnameでユニークにするのが
妥当でしょう。いずれのやり方でも
>ck1 ck2 ck3 ck4 ck5 ck6......ck99 ck100
>のように100個カラムを作る必要があります。
とする必要はなく、「チェックされたものを入れておくカラム」が
1個あれば、あとは1番と3番と7番がチェックされました・・・
のように1チェックにつき1レコードをもてばカラムを
増やす必要はありません。
お返事ありがとうございます。
色々勘違いしており申し訳無いです。
>とする必要はなく、「チェックされたものを入れておくカラム」が
>1個あれば、あとは1番と3番と7番がチェックされました・・・
>のように1チェックにつき1レコードをもてばカラムを
>増やす必要はありません。
仰る方法ですとチェックする項目が増えた場合でもDBを意識せず、フォーム表示部分で追加するだけでチェック出来ますね。
いつも色々教えて頂き、ありがとうございます。
そこで、図々しくももう少し質問させて頂きたいのですが、
上記の方法でchecktableとは別にusertableがあるとして、ユーザIDを用いて結合し、検索等を行えるとこまではわかるのですが、
この方法でチェックボックスがユーザによって更新される場合、更新時にchecktableにユーザIDを用いてDELETEコマンドを発行した後、テーブル上から該当ユーザのチェック情報を削除→入力されたチェック情報をINSERT、という形で良いでしょうか?
No.2
- 回答日時:
思いつく手は、#1さんの言うように。
チェックテーブルを作って
・元のレコードのキー
・チェック番号
と言うようなレコードを持つとか。
他の案としては、チェックフラグを1個の文字列カラムにして、
0000101010101010100....(100個分の文字列)
0なら無効1なら有効として処理する事で文字列で持つ事も出来ます。
お返事ありがとうございます。
>0000101010101010100....(100個分の文字列)
>0なら無効1なら有効として処理する事で文字列で持つ事も出来ます。
このようなやり方もあるのですね。
項目の量や拡張性、検索の利便性などを考えるとチェック専用テーブルにレコードを足して行く方法がやりやすそうですが、場合によっては0と1を用いる方法が都合が良い場面もありそうです。
今後の参考にさせていただきます。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 フーリエ変換の振幅について 1 2022/09/04 08:56
- Visual Basic(VBA) このマクロの説明文を教えてほしいです。 1 2023/01/12 09:17
- 工学 dフリップフロップで二分周器を作成してck (黄色)と出力Qの波形をオシロスコープで確認したのですが 1 2022/11/30 22:19
- 数学 離散フーリエ逆変換が周波数分割数をNにできる理由について 4 2022/09/18 12:56
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- その他(プログラミング・Web制作) このpythonコードの意味教えて下さい! 2 2022/08/26 00:52
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- サッカー・フットサル 交代枠を使い切ったらどうなる問題その2。交代枠を使い切った後にGKが負傷したら・・・ 1 2022/11/29 20:18
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- その他(生活家電) 循環式のふろがま ボイラーの設置の仕方が解らない 4 2022/05/08 16:32
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
PHPでユーザー情報を入力して簡...
-
PHPで、ボタンを押すと同じペー...
-
【HTML(PHP?)】複数のフォーム...
-
DBの値をチェックボックスに反...
-
コードの何が間違っているのか...
-
チェックボックスによる検索(...
-
フォームへの前回入力値をクリ...
-
フォームボタンを押すたびに数...
-
PHPでチェックボックスの内容を...
-
チェックボックスの初期選択と...
-
チェックボックスによる検索
-
チェックボックスの必須項目指定
-
PHPで画像の渡しが上手く行きま...
-
PHPでクリックするたびに変数を...
-
PHPとHTML+Xamppの掲示板で画像...
-
phpの掲示板で新しい順に表...
-
同じページでフォームデータを...
-
<input type='checkbox'>要素で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
PHP ボタンが押されたら処理を...
-
HTMLのリンクをクリックするこ...
-
フォームへの前回入力値をクリ...
-
PHPで画像の渡しが上手く行きま...
-
UPDATEの記述について
-
POSTデータのNAME属性をVALUEに...
-
ラジオボタンをsessionで使いたい
-
テキストボックスに初期値を入れる
-
画面が更新されてもチェックボ...
-
PHPでクリックするたびに変数を...
-
DBの値をチェックボックスに反...
-
同じページでフォームデータを...
-
smartyでチェックボックスをチ...
-
入力フォーム→確認画面→送信画...
-
チェックボックスによる検索(...
-
パラメーターを隠す
-
【PHPチェック】ラジオボタンが...
おすすめ情報