여분필드 값 수정 시 나타나게 하는 방법
본문
<ul id="url_input">
<li>
<table id="table10" style="width:100%;">
<tr><td>
<label class="col-md-10 col-form-label" for="wr_subject">1.상품내용<strong class="sr-only">필수</strong></label>
<textarea id="wr_subject" type="text" name="wr_subject" required class="form-control required" rows="5"> <?php
if(empty(trim($write['wr_subject']))) {
echo"상품명 : \n 상품URL : \n 가격 : \n 수량 : \n 옵션 : ";
} else {
echo $write['wr_subject'];
}
?>
</textarea></td></tr></table>
</li></ul>
<span id="addinput">상품추가</span>
<script>
$(document).ready(function() {
var max_fields = 10;
var add_button = $("#addinput");
var wr =30;
var x = 1;
$(add_button).click(function(e){
e.preventDefault();
if(x < max_fields){
x++; wr++;
$("#url_input").append('<li> <table id="table10" style="width:100%;"><tr><td><textarea type="text" name="wr_'+wr+'" required class="form-control required" rows="5"> 상품명 : \n 상품URL: \n 가격 : \n 수량: \n 옵션 : </textarea></tr></td></table> <img src="./img/" alt="상품추가" title="삭제" class="btn_delete" /></li>');
}
});
$("#url_input").on('click','.btn_delete',function(){
$(this).parent('li').remove(); x--; wr--;
})
});
</script>
위 내용처럼 여분필드를 상품추가 버튼을 누르면 31부터 추가 하게 했는데, DB까지는 정상적으로 저장이 됩니다. 뷰페이지에서는 전부 디스플레이가 되는데, 수정을 하면 wr_subject 만 나오고, 그 후 31부터 저장이 되어 있는 필드값은 나오지 않는데, 혹시 수정 시 추가 했던 필드 값이 수정 시 나오게 하는 방법이 있을까요?
답변 5
수정시 값이 나오게 하는 것은 다음처럼 만들면 되긴하는데
textarea를 자바스크립트로 추가/삭제하는 것은 저렇게 하면 문제가 있습니다
중간에 있는 textarea를 삭제 해버리면 어떻게 되는가요?
예를들어 wr_38까지 생성되었는데 wr_35를 삭제 하면 wr--에 의해서 wr값은 다시 38이 되어
생성 되어있는 wr_38과 중복이 되어버리겠네요(wr_35는 아예 textarea가 없게되겠고)
추가/삭제시 name붙이는 방법을 바꾸어야 하겠습니다
</textarea></td></tr></table>
</li></ul>
<span id="addinput">상품추가</span>
==>
</textarea></td></tr></table>
</li>
<?php wr_first =30;
if($w=='u'){
for($k=31; $k< 41; $k++){
$wr_k='wr_'.$k;
if( !$write[$wr_k] ){ $wr_first=$k-1; break; }
?>
<li> <table id="table10" style="width:100%;"><tr><td><textarea name="<?php echo $wr_k'?>" required class="form-control required" rows="5"><?php echo $write[$wr_k];?></textarea></tr></td></table> </li>
<?php }
}
?>
</ul>
<span id="addinput">상품추가</span>
~~
var wr = <?php echo wr_first;?>;
다음 링크가 도움이 될지 모르겠습니다.
https://github.com/gnuboard/gnuboard5/blob/master/common.php#L608
https://github.com/gnuboard/gnuboard5/blob/master/common.php#L610
수정페이지에 디비에 저장된 값이 표시되도록 인풋을 넣어줘야 해요 포문으로 일괄 표시되게 할수도 있어요 이상 자고나니 개발자였습니다
글을 쓸때 해당 wr_ 값들이 자바스크립트로 생성된 폼이라면
수정시에도 그 값들이 출력되게 하거나 input hidden 속성으로라도 표시해줘야합니다.
이게 지금 보니 동적 추가폼이군요 그러면 스크립트에서 db에 wr 몇까지 있는지 알아내서 그만큼 인풋을 스크립트로 생성해주어야 합니다 그래야 티비값이 수정시에 나옵니다