체크박스 또는 여러개의 입력필드 내용을 한 필드안에 저장해서 사용해야하는 경우가 있다.
아래와 같이하면 필드 하나에 데이터를 저장해 관리할 수 있다.
글쓰기 페이지 코드
'wr_1'라는 필드를 쪼개서 사용할 것이다.
값을 받을 체크박스 name은 임의로 관리하기 편한 이름으로 지정하면 된다. (type1~type4)
* wr_1 : 값을 저장할 필드 (type1~type4에서 받은 값을 wr_1에 한번에 저장한다)
* type1~type4 : 임의로 값을 받을 필드 (DB에 해당 필드 없음)
[코드 설명]
- 상단의 $wr1 = explode("|", $write['wr_1']); 와 체크박스 태그 안의 <?php if($wr1[0]){?>checked<?php } ?> 부분은 글쓰기 페이지를 수정 페이지로도 사용하는 경우에 필요하다. 해당 값이 있는 경우 체크되도록 하기 위한 것이다.
- explode로 쪼갠 값을 불러올때는 0부터 시작해야하는 것을 주의
<?php
$wr1 = explode("|", $write['wr_1']); //수정할때 값을 불러오기 위한 코드
?>
<form name="fwrite" action="<?php echo $action_url ?>" method="post" enctype="multipart/form-data" autocomplete="off" style="width:<?php echo $width; ?>">
<!--체크박스-->
<input type="checkbox" name="type1" id="type1" value="타입1" <?php if($wr1[0]){?>checked<?php } ?>><label for="type1">타입1</label>
<input type="checkbox" name="type2" id="type2" value="타입2" <?php if($wr1[1]){?>checked<?php } ?>><label for="type2">타입2</label>
<input type="checkbox" name="type3" id="type3" value="타입3" <?php if($wr1[2]){?>checked<?php } ?>><label for="type3">타입3</label>
<input type="checkbox" name="type4" id="type4" value="타입4" <?php if($wr1[3]){?>checked<?php } ?>><label for="type4">타입4</label>
<!--체크박스-->
<button type="submit">확인</button>
</form>
글등록 처리 페이지
$type1부터 $type4까지 체크박스의 값을 |을 구분지어 $wr_1으로 저장하여 wr_1필드 데이터로 넣는다.
<?php
$wr_1 = $type1."|".$type2."|".$type3."|".$type4;
$sql ="update {$write_table} set wr_1 = '{$wr_1}' where wr_id = '{$wr_id}' ";
sql_query($sql);
alert("정상적으로 접수되었습니다. 확인 후 메일로 회신 드리겠습니다.", "이동주소");
?>
뷰페이지
<?php echo $view['wr_1'];?>이런식으로 입력값을 그대로 가져오면 타입1|타입2|타입3|타입4 이런식으로 구분자가 함께 표시된다.
| 로 구분지어 저장했던 필드값을 explode 함수를 통해 쪼개서 불러온다.
글쓰기 페이지와 코드 구성은 비슷한데, 입력 받았던 체크박스 형태 그대로 체크한것만 표기해주려면 아래와 같이 체크박스 태그에 <?php if($wr1[0]){?>checked<?php } ?>를 넣어주면 된다.
<?php
$wr1 = explode("|", $view['wr_1']);
?>
<!--체크박스-->
<input type="checkbox" name="type1" id="type1" value="타입1" <?php if($wr1[0]){?>checked<?php } ?>><label for="type1">타입1</label>
<input type="checkbox" name="type2" id="type2" value="타입2" <?php if($wr1[1]){?>checked<?php } ?>><label for="type2">타입2</label>
<input type="checkbox" name="type3" id="type3" value="타입3" <?php if($wr1[2]){?>checked<?php } ?>><label for="type3">타입3</label>
<input type="checkbox" name="type4" id="type4" value="타입4" <?php if($wr1[3]){?>checked<?php } ?>><label for="type4">타입4</label>
<!--체크박스-->
또는 특정 값만 불러오려면 아래처럼 불러오는 것도 가능하다.
<?php if($wr1[0]){ echo $wr1[0]; }?>
그누보드나 영카트 등 php 기반 입력폼에서 유용하게 쓰일 듯하다.
explode함수 사용해서 입력된 값만 표기하는 것은 아래 포스팅 참고 🔽
'개발 > php' 카테고리의 다른 글
[php] explode 배열 최소값, 최대값 구하기 min(), max() (2) | 2024.07.24 |
---|---|
[php] 파일 업로드 기능 DB 저장 안될 때 (4) | 2024.07.22 |
[php] DB 텍스트 특수문자 (<, >, &, ", ' 등) 인식 / html 변환 (4) | 2024.06.19 |
[php] Undefined variable, Undefined index 에러 해결 (4) | 2023.11.07 |
[그누보드/영카트] 아이코드 SMS 문자 여러명한테 보내기 (2) | 2023.07.17 |
[php] mysql 결과 카운트 / 행 개수 구하기 (2) | 2023.05.25 |
[php] iconv 함수 문자 인코딩 / 한글 깨짐 현상 해결 (2) | 2023.02.24 |
[php] csv 파일 다운 한글 깨짐 해결 방법 (2) | 2023.02.17 |