내용일 복잡해서 재질문 합니다.
질문 핵심은 계산은 정상적으로 작동하고 있습니다.
다만 게시판에 제목, 내용, 그리고 " 뷰페이지에서 계산된 값" 을 출력 저장되게 하고자 합니다.
bo_6값 체크 하고 bo_7값 체크하면 추가항목에 선택한 값이 나오며
합계가 나옵니다.
이것을 게시판에 저장하려 하는데 저장할 수 있는 방법이 있을까 합니다.
계산된 값, 뷰페이지 -> bo_6값 : <?php echo $view['wr_6']; ?> , bo_7값 : <?php echo $view['wr_7']; ?>,
추가항목 체크 선택 값 : <?php echo $view['wr_8']; ?>
합계 : <?php echo $view['wr_9']; ?>
-------> 적용되어 있는 부분 ------->
글작성시 여분필드 bo_6값(6,000원) , bo_7(7,000원) :
<input type="checkbox" name="checkbox" value="<?php echo $board['bo_6'] ?>" id="wr_6" onclick="calc( this );" /> 7,000원
<input type="checkbox" name="checkbox" value="<?php echo $board['bo_7'] ?>" id="wr_7" onclick="calc( this );" /> 8,000원
추가항목 체크시 선택값 :
<span id="desc" style="font-weight: bold; font-size: 14px; border: none; background:#FFFFFF;">0</span>
<input type="text" name="result" id="desc" value="0" maxlength="10" size=10 style="font-weight: bold; font-size: 20px; border: none; background:#FFFFFF;" />
합계 : 15,000원
스크립 부분 ---->
<script>
function calc( event )
{
var result = 0;
var desc_txt = [];
var obj;
// var form_obj = document[event.form.name];
var form_obj = event.form;
var form_length = form_obj['checkbox'].length;
var desc = document.getElementById('desc');
for ( var i=0; i<form_length; i++ )
{
obj = form_obj['checkbox'][i];
if ( obj.checked == true ) {
result += parseInt(obj.getAttribute('value'));
// desc_txt.push(obj.parentNode.querySelector('p').innerHTML);
desc_txt.push(obj.parentNode.querySelector('p').innerHTML + '(' + obj.value.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ')');
}
}
desc.innerHTML = desc_txt.join(',');
form_obj['result'].value=result.toLocaleString();
}
</script>
-----> 계산 출력 값

링크값을 눌러보시면 이해가 빠르지 않을까 하네요.
"value" 요거를 우회하거나 이값을 다른값으로 하면 value=<?php echo $write['wr_7']; ?>로 하면 저장되리라 생각이 듭니다.
답변 2개 / 댓글 13개
input 태그의 name 값이 중요합니다.
write.skin.php 에서 input 의 name 값이 wr_1 이면.. DB 테이블의 wr_1 칼럼에 value 값이 저장됩니다.
name 값을 각각 wr_6, 7, 8로 설정해주면 됩니다.
뷰페이지에서는 $view['wr_6'], $view['wr_7'], $view['wr_8']
쓰기 페이지에서는 $wr_6, $wr_7, $wr_8 로 불러올 수 있습니다.
<input type="checkbox" name="checkbox" value="<?php echo $board['bo_6'] ?>" id="wr_6" onclick="calc( this );" /> 7,000원
->
<input type="checkbox" name="wr_6" value="<?php echo $wr_6 ? $wr_6 : $board['bo_6'] ?>" id="wr_6" onclick="calc( this );" /> 7,000원
<input type="checkbox" name="checkbox" value="<?php echo $board['bo_7'] ?>" id="wr_7" onclick="calc( this );" /> 8,000원
->
<input type="checkbox" name="wr_7" value="<?php echo $wr_7 ? $wr_7 : $board['bo_7'] ?>" id="wr_7" onclick="calc( this );" /> 8,000원
<input type="text" name="result" id="desc" value="0" maxlength="10" size=10 style="font-weight: bold; font-size: 20px; border: none; background:#FFFFFF;" />
->
<input type="text" name="wr_8" id="desc" value="<?php echo $wr_8 ? $wr_8 : '0' ?>" maxlength="10" size=10 style="font-weight: bold; font-size: 20px; border: none; background:#FFFFFF;" />
답변에 대한 댓글 6개
<span value="<?php echo $write['wr_8']; ?>" id="desc" style="font-weight: bold; font-size: 14px; border: none; background:#FFFFFF;">0</span>
=>
<input type="text" name='wr_8" value="<?php echo $wr_8 ?>">
or
<input type="hidden" name='wr_8" value="<?php echo $wr_8 ?>">
(form 안의 input, select 태그만 저장이 됩니다. span 태그는 보여주는 역할만 합니다.)
* write.skin.php
<input type="text" name="wr_2" value="사과">
<input type="checkbox" name="wr_3" value="배">
* view.skin.php
<?php echo $view['wr_2'] ?>
<?php echo $veiw['wr_3'] ?>
* write.skin.php
<?php echo $wr_2 ?>
<?php echo $wr_3 ?>
<input type="checkbox" name="wr_7" value="<?php echo $wr_7 ? $wr_7 : $board['bo_7'] ?>" id="wr_7" onclick="calc( this );" />
<form> </form>
form사이에 없어서 저장이 안되었습니다. 이부분은 form사이에 넣어서 해결 되었습니다.
감사합니다.
미해결 부분은
<input type="text" name="wr_8" id="desc" value="<?php echo $wr_8 ? $wr_8 : '0' ?>" maxlength="10" size=10 style="font-weight: bold; font-size: 20px; border: none; background:#FFFFFF;" /> <---- 요 부분인데요. 이것은 wr_6과 wr_7의 선택하면 장바구니처럼 담기는 형태인에요. 이걸 뽑아내려면 input에서는 안되더라구요. 그래서 편법으로
<div id="desc" type="text" style="font-weight: bold; font-size: 14px; border: none; background:#FFFFFF;">
<input type="text" id="desc" name="wr_8" value="<?php echo $write['wr_8']; ?>"> 0</input>
</div>
이렇게 해보니 출력은 잘됩니다..
문제는 저장하려고 일부러<div><input> 0 </input></div> 을 줬습니다.
출련은 잘되는데 wr_8저장이 안되네요. 합계도 저장이 안되구요.
다만 계산식이 안들어가는 wr_6과 wr_7만 저장이 됩니다.
아무래도 계산이 붙어 있는 "wr_id" 값은 저장이 안되는듯하구요.
검색해서 보니 -> f.wr_subject.value=f.wr_subject.value + "글입니다.";
이게 있더라구요. 요게 wr_6 + wr_7 으로 보여집니다.
이걸 적용해서 하면 될듯합니다.
적용 방법을 혹시 아시는지요??
우선 안되더라고.. 매번 도와 주셔서 채택드립니다.
1.
<input type="text" name="result" id="desc"
=>
<input type="text" name="wr_8" id="desc"
2.
form_obj['result'].value=result.toLocaleString();
=>
form_obj['wr_8'].value = result.toLocaleString();
<input 에서
value 와 checked 를 하나로 하시려는 것이 문제를 복잡하게 만드는 것 같군요.
답변에 대한 댓글 7개
<ul>
<li><p> 상품20</p>
<input type="checkbox" name="wr_6" value="Y" data-price="6000 " id="checkbox6"
<?PHP echo $write['wr_6']=='Y' ? 'checked' : ''; ?>
onclick="calc( this );" />6,000</li>
<li><p> 상품2 </p>
<input type="checkbox" name="wr_7" value="Y" data-price="7000 " id="checkbox7"
<?PHP echo $write['wr_7']=='Y' ? 'checked' : ''; ?>
onclick="calc( this );" />7,000</li>
<li>
</ul>
<script>
function calc( event )
{
var result = 0;
var desc_txt = [];
var obj;
// var form_obj = document[event.form.name];
var form_obj = event.form;
var form_length = form_obj['checkbox'].length;
var desc = document.getElementById('desc');
for ( var i=0; i<form_length; i++ )
{
obj = form_obj['checkbox'][i];
if ( obj.checked == true ) {
//result += parseInt(obj.getAttribute('value'));
result += parseInt( $(obj).data( 'price') );
// desc_txt.push(obj.parentNode.querySelector('p').innerHTML);
desc_txt.push(obj.parentNode.querySelector('p').innerHTML + '(' + obj.value.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ')');
}
}
desc.innerHTML = desc_txt.join(',');
form_obj['result'].value=result.toLocaleString();
}
</script>
obj.getAttribute('value'));
대신에( 들어갈 자리에)
$(obj).data( 'price')
를 사용해 보세요.
if $view['wr_6']=='Y')
$wr_6_val=5000; else $wr_6_val=0;
이런 식으로 합계를 구하시면 됩니다.
답변을 작성하려면 로그인이 필요합니다.
말씀대로 적용을 해보았지만 계산값에는 적용이 안되고 저장도 안되고 있어서 고민해보니 스크립트에서 값을 계산하는 부분에 알려주신 name으로 계산이 되느 듯 하구요.
스크립에서 name="checkbox" 이렇게 되어서 계산이 안되어서
<input type="checkbox" name="wr_6" value="<?php echo $wr_6 ? $wr_6 : $board['bo_6'] ?>" id="checkbox" onclick="calc( this );" /> 이렇게 네임 checkbox을 id로 바꾸니 계산은 잘되네요.
그런데 저장은 안됩니다.
<span value="<?php echo $write['wr_8']; ?>" id="desc" style="font-weight: bold; font-size: 14px; border: none; background:#FFFFFF;">0</span>
추가항목도 이렇게 했지만 저장은 안되네요. id값도 저장에 영향이 있나요?