重要なお知らせ

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

【GOLF me!】初月無料お試し

チェックボックスをビット演算子で処理したいのですが、DBに格納した数値をビット演算子で処理する方法がわかりません。
たとえば、北海道から沖縄までのチェックボックスを作成してそれぞれに
1,2,4,8,16,32・・・とvalueを持たせます。
DBには数値の和を入れておきます。
その値を分解してチェックボックスをcheckedにしたいです。
ちょっとわからなくなってしまって。
教えてください、。よろしくお願いします。

A 回答 (2件)

>80個のカラムを用意するのも面倒なので



いやいや、1カラムで処理するのですよ
カード型のDBではないのですから・・・

「正規化」をとにかく学習ください
おそらくSQLを半分程度しか理解していないと思います。

この回答への補足

正規化ですか?初めて聞く言葉です。
チェックボックスの処理って難しいですね・・。
人それぞれみたいで。
10100101101010101000010010
みたいな数字をDBに保存したりしている人もいますし、チェックボックスの数だけカラムを設定していたり・・。
むずかしい・・。

補足日時:2009/03/16 17:13
    • good
    • 0

DBでやるなら正規化をかんがえ1件1データで処理したほうがよいのでは?



ビットで処理するならビット演算子^をつかうとよいでしょう。

<?
$a=1;
$b=2;
$c=$a ^ $b;
print $c;
print $c ^ $a;
print $c ^ $b;
?>

http://php.morva.net/manual/ja/language.operator …

この回答への補足

チェックボックスが80個あるような場合この方式は逆にややこしいんですかね・・。Mysqlでbigint方でなんとかおさまりそうなので検討していました。
80個のカラムを用意するのも面倒なので・・・。
効率よい方法を探しています。

補足日時:2009/03/15 17:34
    • good
    • 0

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