개발/php

[php] 입력 필드 쪼개기 (체크박스 값 DB 저장)

반응형

체크박스 또는 여러개의 입력필드 내용을 한 필드안에 저장해서 사용해야하는 경우가 있다.

아래와 같이하면 필드 하나에 데이터를 저장해 관리할 수 있다.

 

글쓰기 페이지 코드

'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] explode 배열 값 있는 것만 콤마로 구분해서 보여주기

체크박스를 통해서 값을 받고 | 를 구분자로 배열로 저장하는 작업을 했다. 값을 저장하는 것 까지는 문제가 없는데, 값이 있는 경우만 불러오고 콤마로 깔끔하게 보여주는 방법을 고민해보았다

hongpage.kr

 

 

 

 

썸네일

반응형