관리 메뉴

웹개발자의 기지개

[PHP] 유용한 실무팁 7 - 토글 (toggle) 작업하기 본문

PHP

[PHP] 유용한 실무팁 7 - 토글 (toggle) 작업하기

http://portfolio.wonpaper.net 2024. 5. 14. 11:32

실무에서 자주 사용되는  toggle 은 CSS class 나 jQuery 등의 함수를 이용해서 다양하게 작업할  수 있다.

필자가 나름대로 실무에서 사용한 방식을 잠깐 소개한다.

 

 

전체는 기본사항이며, 회화를 한번 클릭하고, 다시 클릭하면 해제가 되어야한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?
$cate1         = ($_GET[cate1])? $_GET[cate1] : $_POST[cate1];
 
$bun_in  = "";
 
if ($cate1) {
    $cate1Arr = explode("|",$cate1);
    for ($i=0;$i<sizeof($cate1Arr);$i++) {
        if ($bun_in=="") {
            $bun_in = " bun like '%".$cate1Arr[$i]."%'";
        } else {
            $bun_in .= " or bun like '%" .$cate1Arr[$i]."%'";
        }
    }
    $bun_in = " and (".$bun_in.") ";
}
 
$show_page  = 20;
$block_page = 10;
 
$keyGap = " where 1=1 ";
if ($cate1) {
    $keyGap .= $bun_in;
}
 
if ($keyword) {
    $keyGap .= " and ( name like '%".$keyword."%' or bun like '%"$keyword ."%') ";
}
 
$tQ = "select count(*) from 테이블 $keyGap";
$tresult = mysqli_query($conn,$tQ) or die("Selection Error!");
$trow     = mysqli_fetch_row($tresult);
$total     = $trow[0];
 
if(!$page$page = 1;
$start = ($page-1)*$show_page;
$total_page = (int)(($total-1)/$show_page)+1;
 
$query = "select * from 테이블 $keyGap  order by no DESC limit $start,$show_page";
$res   = mysqli_query($conn,$query) or die("정보 얻기 실패");
?>
 
 
<form name="fsearch">
<input type="hidden" id="cate1" name="cate1" value="<?=$cate1?>">
    <div class="select">
 
        <ul>
            <li onclick="cateChk('')"          <?if ($cate1==""echo "class='on'";?>>=전체=</li>
            <li onclick="cateChk('한국화')"      <?if (strpos($cate1'한국화'!== falseecho "class='on'";?>>한국화</li>
            <li onclick="cateChk('회화')"      <?if (strpos($cate1'회화'!== falseecho "class='on'";?>>회화</li>
            <li onclick="cateChk('드로잉·판화')" <?if (strpos($cate1'드로잉·판화'!== falseecho "class='on'";?>>드로잉·판화</li>
            <li onclick="cateChk('조각')"      <?if (strpos($cate1'조각'!== falseecho "class='on'";?>>조각</li>
            <li onclick="cateChk('뉴 미디어')"   <?if (strpos($cate1'뉴 미디어'!== falseecho "class='on'";?>>뉴 미디어</li>
        </ul>
        <ul>
            <li onclick="cateChk('공예')"      <?if (strpos($cate1'공예'!== falseecho "class='on'";?>>공예</li>
            <li onclick="cateChk('사진')"      <?if (strpos($cate1'사진'!== falseecho "class='on'";?>>사진</li>
            <li onclick="cateChk('서예')"      <?if (strpos($cate1'서예'!== falseecho "class='on'";?>>서예</li>
            <li onclick="cateChk('디자인')"      <?if (strpos($cate1'디자인'!== falseecho "class='on'";?>>디자인</li>
            <li onclick="cateChk('건축')"      <?if (strpos($cate1'건축'!== falseecho "class='on'";?>>건축</li>
        </ul>
        <div class="input">
            <div class="link"><a href="javascript:;"><img src="/image/link_icon.png" alt=""></a></div>
            <input type="text" placeholder="아티스트명, 분야 검색하기" id="search" name="keyword" value="<?=$keyword?>">
            <label for="search"><img src="/image/search.png" alt="" onclick="searchChk();"></label>
        </div>
    </div>
</form>
 
 
<script>
function cateChk(language) {
    var input = document.forms['fsearch']['cate1'];
    var languages = new Set(input.value ? input.value.split('|') : []);
/*    
    if (language) {
        languages.add(language);
        input.value = Array.from(languages).join('|');
    } else {
        input.value = ''; 
    }
*/
    if (language) {        
        if (languages.has(language)) {
            languages.delete(language); // 문자열이 이미 있다면 삭제
        } else {
            languages.add(language); // 문자열이 없다면 추가
        }
        input.value = Array.from(languages).join('|');
    } else {                            // 전체를 클릭한다면
        input.value = ''
    }    
 
 
    document.fsearch.action = "?";
    document.fsearch.submit();
}
 
 
function searchChk() {
    var form = document.fsearch;
    var gap = form.keyword.value;
    form.action = "?keyword=" + gap + "&cate1=<?=$cate1?>";
    form.submit();
}
</script>
cs

 

 

위의 소스에서 hidden 으로 쌓이는 문자열은 각각 선택한 카테고리 문자열이 '공예|사진|서예' 이런식으로 쌓이는데, 

다시 한번 동일한 공예를 클릭하면 '사진|서예' 이런식으로 cate1 의 문자열을 만들어가는 방식으로 구현하였다.

 

 

 

 

 

Comments