본문 바로가기

프로그래밍 공부/PHP

PHP - 풀다운 메뉴, 리스트 박스 그리고 쿠키

풀다운 메뉴 & 리스트 박스

풀다운 메뉴는 선택 값들의 목록을 풀다운 형식으로 나타낼 수 있다. 행정구력과 같이 선택할 수 있는 값이 많은 때 간편하게 표시할 수 있어 편리하다. 리스트 박스에 경우 선택 영역을 크게 하거나 2건 이상의 항목을 선택할 때 주로 사용한다.

먼저 HTML 파일에 풀다운 메뉴와 리스트 박스 태그를 작성한다.

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
<html>
<head>
    <title>텍스트 송신 테스트</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
    <font size="4">텍스트 송신 테스트</font>
    <form name="form1" method="post" action="view#4.php">
        <!-- 풀다운 메뉴 -->
        행정구역:
        <select name="prefecture">
            <option value="">----- 행정구역을 선택하세요. -----</option>
            <option value="서울특별시">서울특별시</option>
            <option value="부산광역시">부산광역시</option>
            <option value="대구">대구</option>
            <option value="울산">울산</option>
            <option value="광주">광주</option>
            <option value="대전">대전</option>
            <option value="인천">인천</option>
            <option value="세종특별자치시">세종특별자치시</option>
            <option value="경기">경기</option>
            <option value="강원">강원</option>
            <option value="충청북도">충청북도</option>
            <option value="충청남도">충청남도</option>
            <option value="경상북도">경상북도</option>
            <option value="경상남도">경상남도</option>
            <option value="전라북도">전라북도</option>
            <option value="전라남도">전라남도</option>
            <option value="제주특별자치도">제주특별자치도</option>
            <option value="평안북도">평안북도</option>
            <option value="평안남도">평안남도</option>
            <option value="함경북도">함경북도</option>
            <option value="함경남도">함경남도</option>
            <option value="황해도">황해도</option>
        </select><br>
        <!-- 리스트 박스 -->
        취미:<br>
        <select name="hobby[]" size="5" multiple>
            <option value="운동">운동</option>
            <option value="게임">게임</option>
            <option value="독서">독서</option>
            <option value="요리">요리</option>
            <option value="음악">음악</option>
            <option value="미술">미술</option>
            <option value="낚시">낚시</option>
            <option value="골프">골프</option>
            <option value="원예">원예</option>
            <option value="수영">수영</option>
        </select><br>
        <input type="submit" value="송신">
    </form>
</body>
</html>
cs

풀다운 메뉴와 리스트 박스의 차이점은 리스트 박스는 select 태그에 size 속성과 multiple 속성이 들어간다는 것이다. 또한 풀다운 메뉴에서 데이터를 송신하지 않으려면 위에 코드에서 알 수 있듯이 "----- 행정구역을 선택하세요 -----"가 들어간 option 태그에는 value 속성에 아무것도 들어가 있지 않다. 이렇게되면 데이터가 송신되지 않게 만든다.

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
<html>
<head>
    <title>PHP 테스트</title>
</head>
<body>
<?php
    // 풀다운 메뉴
    if($_POST["prefecture"!= ""){
        print "행정구역<br>";
        print $_POST["prefecture"];
    }else{
        print "행정구역을 선택해 주세요.";
    }
?>
<?php
    // 리스트 박스
    if(isset($_POST["hobby"])){
        print "저의 취미는 아래와 같습니다.<br><br>";
        foreach($_POST["hobby"as $hobby){
            print $hobby;
            print "<br>";
        }
    }else{
        print "저의 취미는 없습니다.";
    }
?>
</body>
</html>
cs

데이터를 받으려면 PHP 파일을 생성해 위와 같이 작성한다. select 태그의 데이터 참조는 name 속성을 통해 참조를 한다. 풀다운 메뉴에 경우 if 조건문을 통해 if($_POST["prefecture"] !="")를 사용해 데이터가 존재하면 그 행정구역을 표시하게 만든다. 리스트 박스에 경우 isset 함수로 $_POST["hobby"]에 값이 설정되어 있는지 확인후 값이 설정되어 있다면 foreach 문으로 송신된 데이터를 $hobby에 할당하고 출력시킨다.

쿠키

쿠키(HTTP Cookies)를 사용하면 'X 번째 방문입니다.'라는 메세지를 출력하거나 홈쇼핑 사이트에서 '상품 조회 이력'과 같은 것을 표시할 수 있다. 쿠키를 쉽게 설명하면 PC안에 저장된 텍스트 파일이다.

쿠키를 설정하려면 setcookie 함수를 사용한다.

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
<?php
    $count = 1;
    if(isset($_COOKIE["count"])){
        $count = $_COOKIE["count"];
        $count ++;
    }
    setcookie("count"$count,time() + 10);
?>
<html>
<head>
    <title>쿠키 테스트</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
    쿠키테스트<br>
    <br>
<?php
    if($count == 1){
?>
        첫 방문입니다.<br>;
        <br>
        쿠키 정보가 없습니다.<br>
        페이지를 새로고침 하세요.<br>
<?php
    }else{
?>
        당신은 <?=$count?> 번째 방문하였습니다.<br>
        <br>
        10초 이내에 새로고침을 하면 방문 카운트가 올라갑니다.
<?php 
    }
?>
</body>
</html>
cs

위의 코드에서 $count를 0으로 초기화 하고 있는데 쿠키 정보가 있다면 $_COOKIE["count"]에 데이터가 있어 $count에 $_COOKIE["count"]의 내용이 할당이 되고 $count ++ 에 따라서 1씩 가산이 된다. setcookie 함수에는 키를 count, 값은 $count에 유효기간은 10초로 설정한다.

쿠키 정보가 없는 경우에는 $count에 1이 할당이 되어있어서 if($_COOKIE["count"]에 따라 쿠키 정보가 없습니다. 라는 메세지를 출력한다.

명칭(또는 함수 이름) 형태 설명
글로벌 변수 $_GET["데이터(name)"] GET으로 송신된 데이터 할당
  $_POST["데이터(name)"] POST로 송신된 데이터 할당
  $_REQUEST["데이터(name)"] GET or POST로 송신된 데이터 할당
  $_COOKIE["키"] 쿠키에 설정되는 값 참조
rawurldecode rawurldecode("멀티바이트 문자열"); 멀티바이트 인코드 처리
hidden HTML input 태그의 type 속성에 type="hidden"입력 데이터를 표시하지 않고 송신 
키[ ] HTML input 태그의 name 속성에 name="키[ ]"입력 name 속성에 배열을 지정
isset isset($변수); 변수에 값이 설정되어 있는지 검사
setcookie setcookie("키", "값", 쿠키의 유효기간); 데이터를 쿠키에 저장한다.