728x90
반응형
웹 개발을 하다 보면 여러 체크박스를 선택하면서 데이터를 추출해 작업하는 것은 굉장히 흔합니다. 나름 제 기준에서는 간소화하다고 생각해서 제가 사용하는 것을 올려봅니다.
1. view
<input type="checkbox" name="subject[]" id="subject8" value="6701">
<label for="subject8">국어</label>
<input type="checkbox" name="subject[]" id="subject17" value="6702">
<label for="subject17">영어</label>
<input type="checkbox" name="subject[]" id="subject24" value="6703">
<label for="subject24">수학</label>
<input type="checkbox" name="subject[]" id="subject30" value="6704">
<label for="subject30">사회 </label>
2. controller
일반 php라면 함수를 추가하시면 되고 코드이그나이터라면 helper를 사용하시거나 컨트롤러에 메소드를 하나 추가해서 사용하셔도 됩니다. 문자라면 싱글쿼터(')를 붙여주고, 숫자라면 붙여주지 않습니다. 만약 PHP가 7.3미만이시라면 array_key_first함수도 따로 추가해주시면 됩니다.
##컨트롤러
$data = $this->input->get(NULL, TRUE);
print_r($data['subject']);
//Array ( [0] => 6702 [1] => 6703 [2] => 6704 )
$data['subject'] = setCheckBox($data['subject']);
print_r($data['subject']);
//6702,6703,6704
## helper(공통함수)
function setCheckBox(array $array) {
$tmp = "";
foreach($array as $index => $row){
##문자라면
if(is_numeric($row) === false)
$row = "'" . $row . "'";
if ($index === array_key_first($array))
$tmp = $row;
else
$tmp .= ',' . $row;
}
return $tmp;
}
## PHP 7.3미만이라면 추가
if( !function_exists('array_key_first') ) {
function array_key_first(array $array) {
if( $array === [] ) { return NULL; }
foreach($array as $key => $_) { return $key; }
}
3. model
SELECT * FROM TABLE WHERE subject IN ( $data['subject'] )
728x90
반응형
'IT > PHP | CI' 카테고리의 다른 글
[PHP/CodeIgniter] ZOOM API 연동하기 (sever-to-sever OAuth) - 2 (0) | 2023.10.13 |
---|---|
[PHP/CodeIgniter] ZOOM API 연동하기 (sever-to-sever OAuth) - 1 (0) | 2023.09.27 |
[CodeIgniter] db 에러(error) 시 멈춤 무시하기 (0) | 2023.08.02 |
[PHP] strpos함수로 특정 키워드(문자열) 포함 여부 체크하기 (0) | 2023.07.04 |
PHP 시큐어코딩 (0) | 2023.05.21 |