분할된 필드 value값 sql문 질문...
본문
데이터 입력시에
<?
$ca_3 = explode("|",$ca[ca_3]);
$ext3_00 = $ca_3[0];
$ext3_01 = $ca_3[1];
$ext3_02 = $ca_3[2];
$ext3_03 = $ca_3[3];
$ext3_04 = $ca_3[4];
$ext3_05 = $ca_3[5];
$ext3_06 = $ca_3[6];
$ext3_07 = $ca_3[7];
$ext3_08 = $ca_3[8];
$ext3_09 = $ca_3[9];
$ext3_10 = $ca_3[10];
?>
<tr>
<th scope="row" rowspan="3">업종</th>
<th scope="row">숙박/대관</td>
<td colspan="3">
<div class="input"><input type="checkbox" name="ext3_00" value="호텔/컨벤션" id="ca_3_0" <?php if($ext3_00 == '호텔/컨벤션' ) echo 'checked="checked"'; ?>><label for="ca_3_0"> 호텔/컨벤션</label></div>
<div class="input"><input type="checkbox" name="ext3_01" value="컨벤션" id="ca_3_1" <?php if($ext3_01 == '컨벤션' ) echo 'checked="checked"'; ?>><label for="ca_3_1"> 컨벤션</label></div>
<div class="input"><input type="checkbox" name="ext3_02" value="리조트" id="ca_3_2" <?php if($ext3_02 == '리조트' ) echo 'checked="checked"'; ?>><label for="ca_3_2"> 리조트</label></div>
<div class="input"><input type="checkbox" name="ext3_03" value="연수원" id="ca_3_3" <?php if($ext3_03 == '연수원' ) echo 'checked="checked"'; ?>><label for="ca_3_3"> 연수원</label></div>
<div class="input"><input type="checkbox" name="ext3_04" value="유스호스텔" id="ca_3_4" <?php if($ext3_04 == '유스호스텔' ) echo 'checked="checked"'; ?>><label for="ca_3_4"> 유스호스텔</label></div>
<div class="input"><input type="checkbox" name="ext3_05" value="수련원" id="ca_3_5" <?php if($ext3_05 == '수련원' ) echo 'checked="checked"'; ?>><label for="ca_3_5"> 수련원</label></div><br>
<div style="clear:both;"></div>
<div class="input"><input type="checkbox" name="ext3_06" value="세미나/회의장" id="ca_3_6" <?php if($ext3_06 == '세미나/회의장' ) echo 'checked="checked"'; ?>><label for="ca_3_6"> 세미나/회의장</label></div>
<div class="input"><input type="checkbox" name="ext3_07" value="아트홀공연장" id="ca_3_7" <?php if($ext3_07 == '아트홀공연장' ) echo 'checked="checked"'; ?>><label for="ca_3_7"> 아트홀/공연장</label></div>
<div class="input"><input type="checkbox" name="ext3_08" value="회관" id="ca_3_8" <?php if($ext3_08 == '회관' ) echo 'checked="checked"'; ?>><label for="ca_3_8"> 회관</label></div>
<div class="input"><input type="checkbox" name="ext3_09" value="대학교" id="ca_3_9" <?php if($ext3_09 == '대학교' ) echo 'checked="checked"'; ?>><label for="ca_3_9"> 대학교</label></div>
<div class="input"><input type="checkbox" name="ext3_10" value="소극장" id="ca_3_10" <?php if($ext3_10 == '소극장' ) echo 'checked="checked"'; ?>><label for="ca_3_10"> 소극장</label></div>
</td>
</tr>
이렇게 분할 된 값으로 체크값이 저장되는데요. 저장 후에
목록에서 ca_3 에 "호텔/컨벤션" 에 체크된 걸 sql 로 db에서 불러오려는데
분할된거라 그런지 출력이 되질 않는 문제가 있네요..
$sql = " select * from {$g5['g5_shop_category_table']} where ca_3 = '호텔/컨벤션' order by ca_id desc";
분할된 필드인 ca_3 에서 "호텔/컨벤션" 에 체크된 걸 불러오려면 어떻게 수정해줘야 할까요.
!-->!-->
답변 3
where 절에 ca_3 like '%호텔/컨벤션%' 나 instr(ca_3,'호텔/컨벤션') 이렇게 바꿔보세요.
저장을 ext3_03 필드에 하신것 같은데
ext3_03 = "호텔/컨벤션"
이렇게 불러오면 되지 않나요?
아.. 제가 너무 설렁설렁 보고 답변을 드렸군요;;
mysql에서도 정규식이 되는 모양입니다. (저는 아직 사용해본적이 없어서.. ^^;)
컨벤션인 경우에만
ca_3 regexp '[^\/]컨벤션'
이런식으로 구분하여 사용하면 가능할듯 합니다.
직접 문자열을 입력해서 쿼리날리는게 아니라 변수를 적용해서 하는거라면 일률적으로
ca_3 regexp '[^\/]".$변수명."' 이런식으로 해야겠죠.
input태그의 name을 보니 저장하실때 일일이 문자열을 붙이시는건가요?
여튼 문자열들을 다 병합하고 마지막에 앞뒤에 | 문자열을 추가해서 간단하게 하는 방법도 있습니다.
(왠지 정규식은 아무래도 부하가 더 일어날거 같은 기분에..)
이를테면 ext3_00~$ext3_10 까지 병합한 문자열이 $ext3 이라면
병합후에 if($ext3) $ext3 = '|'.$ext3.'|'; 추가하시고 where절에서는
ca_3 like '%|호텔/컨벤션|%' 나 instr(ca_3,'|호텔/컨벤션|')
ca_3 like '%|컨벤션|%' 나 instr(ca_3,'|컨벤션|')
이런식으로 하는거죠. 변수를 사용해도 마찬가지입니다.
ca_3 like '%|".$변수명."|%' 나 instr(ca_3,'|".$변수명."|')