여분 필드를 이용한 다중선택 값에서 input 선택된 놈일 때 checked 표시 뜨게 하는 방법

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
여분 필드를 이용한 다중선택 값에서 input 선택된 놈일 때 checked 표시 뜨게 하는 방법

QA

여분 필드를 이용한 다중선택 값에서 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>";
}

첫번 째는 코드가 넘 길어져서 ㅠㅠ
함수에 넣어서

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++){
        $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에 선루프\헤드램프(HID,LED) 이런식으로 들어가 있고요 ㅠㅠ
<?php echo option_input($board['bo_6'],$board['bo_6'], wr_12);?>

배열을 $data3에 wr_12로만 받고 배열순서를 수동으로[$i] 넣어서 name='$data3"."[$i]'값을 넣어버려서 복잡하게 된 거 같네요 ㅠㅠ
$option_name여기에 배열순서(wr_12[0])가 들어가면 될 거 같은데 ㅠㅠ
그걸 잘 모르겠네요

총 저런식으로 입력받아야 하는 값이 4개 정도에
input값이 50~60개가 넘어가서 함수로 만들면 더 편리할 거 같아서요 ㅠㅠ

왕계란님 이 알려주신 방법은 아주 잘되네요
잘 모르다 보니 돌고 도는 듯 ㅠㅠ
감사합니다 계란님이 알려주신 방법대로 적용해야겠네요

$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>

답변을 작성하시기 전에 로그인 해주세요.
전체 41
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT