테스트 사이트 - 개발 중인 베타 버전입니다

데이터가 A[1]/B[2]/C[3] 인 경우 <div id="A"></div>에 1이 들어가게 하고싶습니다. 채택완료

사향노루 3년 전 조회 1,158

일전에 데이터 값이 `1월/2월/3월`인 경우 1월, 2월, 3월에 해당하는 체크박스에 체크를 하는 작업에 대해 질문을 드렸었고, 그 답변으로

$wr_9_arr = explode('/', $write['wr_9']);
<?php echo (in_array('1월',$wr_9_arr)) ? " checked" : "";?>

라는 답변을 받아 적용한 적이 있습니다.

 

이 기능에 변경이 필요하게 되었습니다.

 

게시글 작성 디자인이 체크박스에서 텍스트작성으로 변경되어 위의 이미지와 같은 모습이 되었습니다.

위의 1월, 3월, 5월에 각각 15 ,17, 13 이라는 값을 입력하고 저장을 누르면 wr_9의 데이터는

`1월[15]/3월[17]/5월[13]`

이라는 식으로 데이터가 들어가도록 작성은 되었습니다.

 

이제 view 페이지, 게시글 수정 페이지에 들어갔을 때,

wr_9의 값에 1월 이라는 텍스트가 있다면 그 뒤의 [] 안에 있는 값을 input에 넣고싶습니다.

위의 $wr_9_arr = explode('/', $write['wr_9']); 를 응용해야할 것같은데, wr_9_arr은 /로 split 한 값이니

wr_9_arr 의 첫번째 값이 1월[15],

wr_9_arr 의 두번째 값이 3월[17],

wr_9_arr 의 세번째 값이 5월[13] 이 될 것인데,

 

js라면, 좀 무식하게 작성한다고 할 때

if(wr_9_arr[0].search !== -1) {

wr_9_arr[0].split("[")[1].split("]")[0];

}

이런식으로 작성하여 15라는 값을 넣는다던가 할텐데, 다른 방법은 없을까요?

 

현재는 js로 기능을 작성하여

<script>
    $(function() {
        const wr_9 = $("input[name=wr_9]").data("wr");
        if(wr_9 != "") {
            let split = wr_9.split("/");
            for(let v=0; v<split.length; v++) {
                const value = split[v];
                const valueSplit = value.split("[");
                const month = valueSplit[0];
                const monthVal = valueSplit[1].split("]")[0];
                const input = $(`[data-month=${month}]`);
                input.val(monthVal);
            }
        }
    })
</script>

이렇게 작성하였습니다. 기능은 정상 작동중입니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
3년 전

<?php 
    $write['wr_9'] = "1월[15]/3월[17]/5월[13]";
    $wr_9_arr = explode('/', $write['wr_9']); 
    
    $ret = array();
    foreach ($wr_9_arr as $value) {
        preg_match_all("/\[([^)]+)\]/i", $value, $matches);
        $value =  preg_replace('/\[[^\]]*\]/','',$value);
        $ret[$value] = $matches[1][0];
    }
?>

<div id="1월"><?=$ret['1월']?></div>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

사향노루
3년 전
답변주셔서 정말 감사합니다!
js로 작성했지만, 이쪽이 더 깔끔할 것 같네요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인