채택완료

3년전에 궁금하던 거,,,

2016-09-10 (토) 09:43:03 7,216

천단위 컴마 찍기를 하고 싶었는데...구글링해도 이해가 안되그,,,유유

그래서 포기했던 겁니다..

 

3년이 지난 지금 약간은 알아먹을 수 있게 되어,,, 

, 키핑과 함께 찍는거 까지는 했는데...

이게 저장할 때도 컴마가 들어가 계산이 꼬이그 역같네요,,ㅎㅎ

키핑과 함께 컴마 찍고 저장시 제거하는 올바른 방법 좀 정리해주실 분 없을까요?

 

wr_1에 쓰려는데...

|

답변 7개 / 댓글 13개

채택된 답변
+20 포인트

한번해보세요 간소하게 만들었는데 잘되는진 테스트해보시구요

write.skin.php 입니다.

        <tr>

            <th scope="row"><label for="wr_1">wr_1<strong class="sound_only">필수</strong></label></th>

            <td class="wr_1">

                <input type="text" name="wr_1" value="<?echo number_format($write['wr_1']) ?>" id="wr_1" class="frm_input" size="50">

            </td>

        </tr>

그리고 아랫쪽 스크립트에 넣어주세요

$(function() {

$("input[name=wr_1]").keyup(function(){

//console.log("1234");

var temp = no_comma($(this).val());

console.log(temp);

$(this).val(number_format(temp));

});

});

이렇게 넣으시면 글쓰기중 콤마가 찍힙니다.

write_update.skin.php

<? 

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요. 

$wr_1 = preg_replace("/[^0-9]/", "",$wr_1);

if(!$wr_comment) {  // 코멘일때는 저장하면 안됩.

    $sql = " update $write_table set wr_1 = '$wr_1' where wr_id = '$wr_id' " ; 

sql_query($sql); 

?>

이렇게 넣어서 모든 문자를 제거해주고 저장을합니다.

view.skin.php

<?echo number_format($view['wr_1']);?> 

number_format을 이용하여 콤마를 찍어서 보여주죠

길게적은 답변글에 댓글이없어서 더 남겨드리고 싶어도

힘이 나질않아 고민했지만 도움이 되었음하네요

답변에 대한 댓글 2개

2016-09-10 (토) 14:19:10
시간 내서 설명까지 곁들여 정리해주셔서 진심 감사합니다~
다른 분에게도 꼭 도움이 될 것입니다.
2016-09-10 (토) 22:04:58
감사합니다~ 좋습니다~
2016-09-10 (토) 13:58:56

그냥 단순무식하게 write.skin.php 에서 자체적으로 해결하는 방법입니다.

계산식은 그냥 자바스크립트로 했구요

number_format 은 글쓰기든 글수정이든 보기든 어디서든 쓸수있게 스크립트로 클래스 형태로 만들었어요

 

Copy
<script language="javascript"> // 콤마찍기 온로드 스크립트 첫번째window.onload = function() {  var ins = document.getElementsByClassName('addcomma');     for(var i=0; i<ins.length; i++)     {         if(ins[i].type=='text' && !isNaN(ins[i].value) && ins[i].value.length>3)         {             ins[i].value = ins[i].value.toComma();         }     } }  // 요곤 계산식 스크립트function calcs1(){ var f = document.fwrite; var temp = 0;temp=  parseInt(f.wr_1.value) +  parseInt(f.wr_2.value) +  parseInt(f.wr_3.value) +  parseInt(f.wr_4.value) ;f.wr_5.value=temp;f.wr_5comma.value=temp; // 계산할때마다 숫자가 변하므로 계산식 안에 콤마스크립트를 넣어줌// 계산식이 끝나고 결과가 써질때 아래 콤마 스크립트가 실행됨String.prototype.toComma = function() {     var n = String(this).replace(/\,/g, "");     return n.match(RegExp("^[0-9]{"+(n.length%3||3)+"}|[0-9]{3}","g")); }}</script>

fwrite(글쓰기 페이지의 기본 form) 으로 감싸진 form 에서

calcs1(); 스크립트를 실행하면 여분필드 wr_1 ~ wr_4 까지의 합을 wr_5 에 뿌려줍니다.

그리고 이때 wr_5comma input 안에도 같은 결과값을 넣구요

wr_5 는 hidden 처리하여 db로 넘길 때 쓰이구요 wr_5comma는 그냥 단순히 사용자에게 보여주는 값입니다. wr_5comma 아이디는 아무거나 해도 상관없어요.

그리고 아이디가 wr_5comma인 input 안에 addcomma 클래스를 넣어주세요.

그러면 계산식 스크립트가 매 실행될때마다 class="addcomma" 인 input 에 콤마가 찍히게 됩니다.

실제 저장될 wr_5 는 hidden 처리되니 계산식이 꼬일수도 없구요~

3줄요약

wr_1 ~ wr_4 값을 더해서 wr_5 wr_5comma 에 뿌려줌

wr_5는 hidden 처리되서 db 에 저장되고 wr_5comma 는 사용자에게 콤마로된 계산값을 보여주는 항목임

콤마를 스크립트로 처리해서 클래스명이 addcomma 인 모든 항목의 숫자에 콤마가 찍힘.

답변에 대한 댓글 2개

2016-09-10 (토) 14:20:02
시간내서 이렇게 설명까지 곁들여 정리해주셔서 감사드려요~
다른 분에게도 꼭 도움이 될 것입니다.
2016-09-10 (토) 22:04:38
감사합니다~ 고맙습니다~ 좋습니다~
2016-09-10 (토) 13:44:43

잠시만요.. 예전에 제가 견적서 만들때 썻던 자료 올려드릴께요~

2016-09-10 (토) 11:33:43

글쓴이님의 고충 저도 잘압니다.

보기나 리스트페이지에서는 number_format 을 이용하여

컴마를 찍을수 있겠지만.

문제는 쓰기페이지!!

number_format 으로 컴마를 넣으면 계산식이 꼬이고

않넣자니 백만원대 숫자가 너무 밉게 나오고..

그래서 저는 계산이 필요한 여분필드 wr_10 을 hidden 으로 해놓구요

input wr_10c 를 하나 만들어 그곳에 number_format 으로 뿌려줍니다.

그리고 계산이 끝나면 wr_10 과 wr_10c 두곳에 값을 보내는거죠..

그러면 사용자는 계산값이 wr_10c 로 보여 컴마가 잘 보이고

실제 db저장은 hidden 된 wr_10 에 저장되니 둘다 해결입니다.

리스트나 뷰페이지에서는 number_format 으로 간단하게 해결!

답변에 대한 댓글 2개

2016-09-10 (토) 11:46:39
님, 말씀하시는게 초보가 아니시군요,,ㅋ
맞아여,, 쓰기페이지.. 유유
송구스럽지만 예제를 좀 보여주시면 안될까요? ㅎ
2016-09-10 (토) 12:49:24
계산할때는 number_format 비적용한것으로 계산하고
보여줄때는 최종 결과를 number_format으로

위에서 말씀하신대로 number_format 로 함수를 이용하면 천단위 콤마를 사용하실수있습니다.

글쓰기할때나 db에 넣을때는 해당 함수를 사용하지않고

순수하게 10000으로 넣어주는거죠

보여지는 view페이지에서 echo number_format($view['wr_1']); 이런식으로 사용하시면

보여지는 view페이지에서 10,000 으로 찍혀서 보이겠죠

글쓰기시, 글수정시에도 입력할때마다 10,000등으로 보여주려면

스크립트를 이용하셔서 구연하셔야합니다.

db에 저장할때에도 꼭 , 를 포함해서 저장을 하여야하는지는 의문이군요

그냥 1000000과 같이 그냥 숫자로 입력을 하고

보여지는 페이지에서만 number_format으로 출력해준다면

여러가지 생각을 복잡하게 할 필요는없어지는거지요

답변에 대한 댓글 1개

2016-09-10 (토) 14:18:10
친절한 설명 감사드립니다~ 확실히 이해되네요, 댓글이 없어 오해를 하셨군요,,ㅋ
그럴리가 있겠습니까,,,

아주 간단한건데요 

http://www.webmadang.net/develop/develop.do?action=read&boardid=1003&page=3&seq=25  

아니 이걸 3년동안 고생하세요? ㅎ 

, 키핑과 함께 찍는거 까지는 했는데...

<--- 그렇다면 스킨폴더에 write_update.skin.php 화일에다가 다음을 추가해서 사용 합니다

$wr_1 = str_replace(;,;, $wr_1);

다른 방법 : write.skin.php 하단 submit함수 부분에 다음을 추가

f.wr_1.value= f.wr_1.value.replace(/,/g, '');

답변에 대한 댓글 6개

2016-09-10 (토) 09:58:22
답변 감사합니다~

$wr_1 = str_replace(;,;, $wr_1); 는 애러코드라고 하는거 같은데 왜그럴까요?
$wr_1 = str_replace(',', $wr_1); 따옴표 오타
2016-09-10 (토) 10:21:18
이제 애러는 안나는데,, 저장시 제거는 안되는군요,,
2016-09-10 (토) 22:45:53
다른 방법은 잘 됩니다~ 늘 감사합니다.
write_update.skin.php -->write_update.head.skin.php 화일명이 잘못 되었습니다
2016-09-13 (화) 23:04:07
감사합니다. write_update.head.skin.php에서 처리하는 방법은 안되네요,,
스크립트에서 해도 상관없으니 잘 쓰겠습니다.
즐거운 한가위되세요,

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