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

3년전에 궁금하던 거,,, 채택완료

민쯩먼저깔게요 9년 전 조회 6,682

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

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

 

 

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

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

 

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

 

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

 

wr_1에 쓰려는데...

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

답변 7개

채택된 답변
+20 포인트
그누위즈

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

 

write.skin.php 입니다.

       

           

           

               

           

       

 

 

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

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

 

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

 

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

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

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

답변에 대한 댓글 2개

민쯩먼저깔게요
9년 전
시간 내서 설명까지 곁들여 정리해주셔서 진심 감사합니다~
다른 분에게도 꼭 도움이 될 것입니다.
민쯩먼저깔게요
9년 전
감사합니다~ 좋습니다~

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

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

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

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

 

</p><p><script language="javascript"></p><p> </p><p>// 콤마찍기 온로드 스크립트 첫번째
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(); 
        } 
    } </p><p>} </p><p> </p><p>// 요곤 계산식 스크립트</p><p>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;</p><p>f.wr_5comma.value=temp;</p><p> </p><p>// 계산할때마다 숫자가 변하므로 계산식 안에 콤마스크립트를 넣어줌</p><p>// 계산식이 끝나고 결과가 써질때 아래 콤마 스크립트가 실행됨
String.prototype.toComma = function() 
{ 
    var n = String(this).replace(/\,/g, ""); 
    return n.match(RegExp("^[0-9]{"+(n.length%3||3)+"}|[0-9]{3}","g")); 
}
}</p><p></script></p><p>

 

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개

민쯩먼저깔게요
9년 전
시간내서 이렇게 설명까지 곁들여 정리해주셔서 감사드려요~
다른 분에게도 꼭 도움이 될 것입니다.
민쯩먼저깔게요
9년 전
감사합니다~ 고맙습니다~ 좋습니다~

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

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

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

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

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

보기나 리스트페이지에서는 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개

민쯩먼저깔게요
9년 전
님, 말씀하시는게 초보가 아니시군요,,ㅋ
맞아여,, 쓰기페이지.. 유유
송구스럽지만 예제를 좀 보여주시면 안될까요? ㅎ
프로그래머7
9년 전
계산할때는 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개

민쯩먼저깔게요
9년 전
친절한 설명 감사드립니다~ 확실히 이해되네요, 댓글이 없어 오해를 하셨군요,,ㅋ
그럴리가 있겠습니까,,,

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

P
9년 전
로그인 후 평가할 수 있습니다

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

9년 전

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

<--- 그렇다면 스킨폴더에 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개

민쯩먼저깔게요
9년 전
답변 감사합니다~

$wr_1 = str_replace(;,;, $wr_1); 는 애러코드라고 하는거 같은데 왜그럴까요?
균이
9년 전
$wr_1 = str_replace(',', $wr_1); 따옴표 오타
민쯩먼저깔게요
9년 전
이제 애러는 안나는데,, 저장시 제거는 안되는군요,,
민쯩먼저깔게요
9년 전
다른 방법은 잘 됩니다~ 늘 감사합니다.
균이
9년 전
write_update.skin.php -->write_update.head.skin.php 화일명이 잘못 되었습니다
민쯩먼저깔게요
9년 전
감사합니다. write_update.head.skin.php에서 처리하는 방법은 안되네요,,
스크립트에서 해도 상관없으니 잘 쓰겠습니다.
즐거운 한가위되세요,

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

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

로그인