$card_is = bit_get(\"card_is\"); // 원래의 변수를 다중 선택된 비트값의 변수로 재사용.
echo bit_str($card_is,$arr_card_is,$sep=\",\") // 선택한 카드를 , 로 구분하여 리턴.
?>
입력은 이렇게 받으면 되고, 수정할 때 다시 원래의 카드를 선택하는 건
아래 요령입니다.
<form name=f>
<input type=checkbox name=\"card_is[]\" value=\"0x00001\"
<?=(0x00001 & $card_is)?\"checked\":\"\"?>> 삼성
<input type=checkbox name=\"card_is[]\" value=\"0x00002\"
<?=(0x00002 & $card_is)?\"checked\":\"\"?>> LG
<input type=checkbox name=\"card_is[]\" value=\"0x00004\"
<?=(0x00003 & $card_is)?\"checked\":\"\"?>> 현대
...
<input type=checkbox name=\"card_is[]\" value=\"0x01000\"
<?=(0x01000 & $card_is)?\"checked\":\"\"?>> 경남
</form>
그렇다면 검색(목록에서..) 할 때는... ?
$find_card_is = 0x0001 | 0x0003 | 0x01000 ;
이 값은 삼성,lg,경남 카드 선택하는 것이구...
select * from table where card_is & $find_card_is;
이렇게 하시면, card_is 에 설정된 비트중 $find_card_is 의 비트와 하나라도 맞으면 찾아집니다.
select * from table where card_is & ~ $find_card_is;
--> 하나도 일치하지 않을 때.
select * from table where (card_is & $find_card_is) = $find_card_is;
--> 모두가 일치할 때.