여분 필드를 이용한 다중선택 값에서 input 선택된 놈일 때 checked 표시 뜨게 하는 방법
본문
여분 필드를 이용한 다중선택 값에서 input 선택된 놈일 때 checked 표시 뜨게 하는 방법이 궁금하네요 ㅠㅠ
아래와 같은 방식으로 했을 땐
일일히 코딩해줘야 하고 코드도 길어지고
출력시엔 선루프|헤드램프(HID,LED)||||알루미늄 힐||||||||||
|||||||| 이렇게 엉뚱한 애들도 출력이 되네요 ㅠㅠ
<?php
$wr_11 = explode("|", $write['wr_11']);
?>
<dd><input type='checkbox' name="wr_11[0]" id="wr_11" value="선루프" <?php echo ($wr_11[0] == "선루프") ? "checked" : "";?>><span>선루프</span></dd>
<dd><input type='checkbox' name="wr_11[1]" id="wr_11" value="헤드램프(HID,LED)" <?php echo ($wr_11[1] == "헤드램프(HID,LED)") ? "checked" : "";?>><span>헤드램프(HID,LED)</span></dd>
<dd><input type='checkbox' name="wr_11[2]" id="wr_11" value="파워 전동 트렁크" <?php echo ($wr_11[2] == "파워 전동 트렁크") ? "checked" : "";?>><span>파워 전동 트렁크</span></dd>
<dd><input type='checkbox' name="wr_11[3]" id="wr_11" value="코스트 도어 클로징" <?php echo ($wr_11[3] == "코스트 도어 클로징") ? "checked" : "";?>><span>코스트 도어 클로징</span></dd>
비슷한 팁이 있어서
함수로 만들고,
function option_input($data1,$data2,$data3=''){
$data1=explode("|",$data1); // 구분자가 "|"로 되어 있으나 다른 문자로 변경 가능
$data2=explode("|",$data2); // 구분자가 "|"로 되어 있으나 다른 문자로 변경 가능
for($i=0; $i < count($data1); $i++){$dataA[$i]=trim($data1[$i]);}
for($i=0; $i < count($data2); $i++){$dataB[$i]=trim($data2[$i]);}
for($i=0; $i < count($data2); $i++){
$option_name = '$wr_12['.$i.']';
$selected =($option_name == "$dataB[$i]") ? "checked" : "";
$result .="<dd><input type='checkbox' id='$data3' name='$data3"."[$i]' value='$dataB[$i]' $selected >$dataA[$i] $option_name</dd>";
}
return($result);
}
각 체크할 입력폼의 글자들을
bo_6 에 다 적어두고, 아래와 같이
사용중인데요
<?php echo option_input($board['bo_6'],$board['bo_6'], wr_12);?>
문제는 글 등록하고 난 후
수정으로 들어갔을 때
체크된 항목들이 checked 상태가 안되고
다시 일일히 체크해서 저장해줘야 하네요 ㅠㅠ
하루 종일 붙잡고
끼어넣고 해봐도 ㅠㅠ 되지 않네요
잘못된 방향으로 답을 찾으려고 해서 안되는 것인지
아래부분이 핵심인거 같은데
배열 자체를 함수에 그냥 wr_12 이렇게 뜨고
wr_12에 숫자 0부터 시작되게끔 수동으로 적용시켜서 그런지 ㅠㅠ
$selected =($option_name == "$dataB[$i]") ? "checked" : "";
답변 4
$goods = array("선루프", "헤드램프(HID,LED)", "파워 전동 트렁크", "코스트 도어 클로징");
$wr11 = explode("|", $write['wr_11']);
foreach($goods as $v) {
$checked = in_array($v, $wr11) ? " checked" : "";
echo "<dd><input type='checkbox' name='wr_11[]' value='".$v."'".$checked". /><span>".$v."</span>";
}
$data3 = wr_1;
$i는 증가값 별도의 변수인데요
$data3 라는 함수와 $i 라는 함수를
아래와 같이 출력시키면 루프가 돌면서
$data3$i
wr_10
wr_11
wr_12 <이렇게 출력이 됩니다.
근데 아래와같이 [0] ...[4] 이렇게 출력 시키고 싶은데 ㅠㅠ
wr_1[0]
wr_1[1]
wr_1[2]
wr_1[3]
아래와 같이 하니
배열로 인식이 되네요 ㅠㅠ 배열로 인식 안되게 별도의 변수를 같이 출력 시키는 방법이 뭘까요 ?
$data3[$i]
- 우와 - ㅠ {$data3}[$i] 이렇게 하니 되네요 후덜덜덜
근데 $selected =($option_name == "$dataB[$i]") ? "checked" : ""; 여기에서
$option_name 값에 {$data3}[$i] 이렇게 넣으니 오류가 나네요 이건 어떻게 넣어야 하나요 ?
$check = $data3.'['.$i.']';
$selected =($check == "$dataA[$i]") ? "checked" : "";
이렇게 하니 되네요
근데 $selected 가 왜 안 먹힐까요 ?ㅠㅠ
함수로 하기 전에 아래 코드로 일일히 적어줬는데 너무 길어져서
바꿨는데 선루프" <?php echo ($wr_11[0] == "선루프") ? "checked" : "";?>이 부분이 안 먹히네요
<input type='checkbox' name="wr_11[0]" id="wr_11" value="선루프" <?php echo ($wr_11[0] == "선루프") ? "checked" : "";?>><span>선루프</span>