ITmembers.net 아카이브 · 2002–2009

질문과 답변

[re] 검색을 select 폼이 아니라 체크박스형식으로 할려면...

>검색을 select 폼이 아니고
>체크박스형식으로 할려면
>여기 나온 게시판 프로젝트 2 에서 어떻게 변형을 해야될까요?
>
>쿼리문하고 받는 부분을 약간 변경하면 될듯한데요
>
>위의 쏘스에 최대한 변경을 안하고 하려면 값을 넘기는부분
>즉 링크걸리는 부분은 어떻게 바꿔야 되는지 알려주세요~
>
>쿼리 부분에서 or 로 연결해서 붙이면 될듯한데요...
>
><input type ="checkbox" name ="subject" value="subject">
><input type ="checkbox" name ="comment" value="comment">
><input type ="checkbox" name ="name" value="name">
>
>이런식으로 바꾸면 쿼리문에서
>subject  like '%src_value%' or comment like '%src_value%' or
>name like '%src_value%'
>
>이렇게 바꾸고 나면 리스트나 링크걸려서 넘어가는 부분은
>src_name=$src_name&src_value=$src_value
>
>이부분을 어떻게 해야되는지 --;;
>
>그럼 즐거운 주말되세요!!

이건 답변하려면 시간이 좀 걸리는데요..
그래도, 주말이니깐...

우선 검색 폼은 다음과 같이 하면 되겠네요.

이름<input type=checkbox name=src_name>
제목<input type=checkbox name=src_subject>
내용<input type=checkbox name=src_memo>

여기까지는 쉽지요...

그런데, 여기서 입력된 값으로 where 문을 구성하도록 만드는 것이 좀 복잡할 수 있습니다.

아래와 같이 하면 될 것 같은데요...

//체크박스를 통한 다중 검색
if ($src_value != '') { // 검색어가 입력되었으면
        $i=0;
        if ($src_name) { // 이름이 체크되었을 경우
                $i++;
                $w_str[$i] = "name like '%$src_value%' ";
        }
        if ($src_subject) { // 제목이 체크되었을 경우
                $i++;
                $w_str[$i] = "subject like '%$src_value%' ";
        }
        if ($src_memo) { // 내용이 체크되었을 경우
                $i++;
                $w_str[$i] = "memo like '%$src_value%' ";
        }
        for($j=1;$j<=$i;$j++) { // 위의 문장을 모두 연결함
                if ($j < 2) {
                        $where .= $w_str[$j];
                } else { // 두가지 이상일 경우 or로 연결함
                        $where = $where." or ".$w_str[$j];
                }
        }
        if ($i > 0) $where = "where $where"; // 하나라도 체크가 되었을 때만
}

좀 복잡하죠?

그래도 몇번을 뚫어져라 쳐다보면 이해가 되실 겁니다...^^

댓글 1