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

게시판 리스트에서 여분필드 값의 총합 구하기 질문입니다. 채택완료

masahide 2년 전 조회 3,083

안녕하세요.
모든 게시물 wr_2에 금액이 입력되어 있습니다. 

 

이걸 리스트에서 총합으로 불러오고 싶은데, 
게시물 전체의 wr_2의 총합은 
<?php $total2 = sql_fetch(" select sum(wr_2) as sum2 from $write_table "); echo number_format($total2['sum2']); ?>
이렇게 불러오는걸 검색해서 알고 있습니다.

 

그런데, 
게시판 전체가 아닌 현재 페이지에 보여지는 wr_2의 총합만 불러오려고 합니다.

검색해 보니
for문 안에
$tot_price += $list[$i]['wr_2'];
넣고,

for문 루프 끝나는 곳에
<?php echo $tot_price; ?> 이렇게 넣으면 현재 페이지의 총합이 나오긴 합니다.

그런데 약간의 문제가 있어서 질문드립니다.

 

1.
wr_2에 입력된 값이 콤마(,)가 있어서, 계산 시 콤마(,) 앞자리 숫자만 계산이 됩니다.

예) 100,000 / 50,000 / 70,000 이 입력되어 있다면,
총합의 값이 220,000 이 아닌 220 으로 나옵니다.

전체 총합, 현재 페이지 총합 둘 다 콤마 적용되어 계산되게 할 수 있을까요?

 

2.
현재 페이지에 보여지는 총합의 경우
총합을 불러오는 위치가 for문 루프 끝나는 곳에 입력해야 제대로 나와서 게시판 하단에 위치하는데, 
전 게시판 상단에(for문 전) 위치하고 싶은데, 방법이 없을까요? 

 

3.
이건 제가 아직 찾지 못한 건데,
게시판에서 검색을 했을 경우 검색한 내용이 한 페이지가 아닌 몇 페이지에 걸쳐 나올 때가 있는데, 
현재 페이지가 아닌 이 검색된 게시물만의 wr_2의 총합을 불러오는 건 어려울까요?

 

아시는 분 답변 부탁드립니다.
감사합니다.

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

답변 6개

채택된 답변
+20 포인트

콤마없애고 합계 후 다시 콤마찍기

select format(sum(replace(wr_2,",","")),0) as sum2 from $write_table

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

답변에 대한 댓글 6개

m
masahide
2년 전
친절하신 답변 감사합니다.
select sum(wr_2) as sum2 from $write_table

select format(sum(replace(wr_2,",","")),0) as sum2 from $write_table
로 변경하라는 말씀이신가요?

그렇게 했더니
Parse error: syntax error, unexpected '"', expecting ',' or ')'
에러나서요.
그누아치
2년 전
<?php
$total2 = sql_fetch(" select format(sum(replace(wr_2,',','')),0) as sum2 from $write_table ");
echo $total2['sum2'];
?>
m
masahide
2년 전
친절하신 답변 감사합니다.
덕분에 일단 한가지 해결하였습니다.
그누아치
2년 전
사용하신 합계를 아래처럼 바꿔보세요.
<?php
$tot_price = 0;
for ($i=0; $i<count($list); $i++) {

$tot_price += intval(str_replace(',','',$list[$i]['wr_2']));

}
?>
<?php echo number_format($tot_price) ?>
m
masahide
2년 전
와... 그누아치님 덕분에 해결하였습니다.
정말 감사합니다.

3번째 질문은 제가 좀 더 고민해 보고 정 안되면 새로 글올려보겠습니다.
감사합니다.
그누아치
2년 전
3번은 무식한 방법이지만 상단에 아래 구문을 넣으세요.
<?php
$tot_price = 0;
for ($i=0; $i<count($list); $i++) {
$tot_price += intval(str_replace(',','',$list[$i]['wr_2']));
}
?>
<?php echo number_format($tot_price) ?>

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

다음과 같은 방법도 있으니 참고해보세요

 

Q1. 콤마(,)가 포함된 숫자 계산

</p>

<p>// 그누보드 게시물에서 wr_2 값을 가져옴

$wr_2 = "100,000";</p>

<p>// 콤마(,)를 제거

$wr_2 = str_replace(",", "", $wr_2);</p>

<p>// $wr_2를 정수로 변환

$wr_2 = intval($wr_2);</p>

<p>// 다른 숫자와 계산

$total = $wr_2 + 50000 + 70000;</p>

<p>// 결과 출력

echo "총합: " . number_format($total); // 콤마 포함 숫자 출력

 

Q2. 현재 페이지에 보여지는 총합 위치 변경

</p>

<p>// 게시판 상단에 총합 표시

$board_total = 0;</p>

<p>// 그누보드 게시물을 루프로 돌면서 각 게시물의 wr_2 값을 가져와서 더함

foreach ($board_posts as $post) {

    $wr_2 = intval(str_replace(",", "", $post['wr_2']));

    $board_total += $wr_2;

    // 게시물 내용 표시

    // ...

}</p>

<p>// 게시판 상단에 총합 표시

echo "게시판 상단 총합: " . number_format($board_total);

 

Q3. 검색된 게시물의 wr_2 총합

</p>

<p>// 검색 결과 게시물의 wr_2 총합 초기화

$search_total = 0;</p>

<p>// 그누보드 검색 결과를 루프로 돌면서 각 검색된 게시물의 wr_2 값을 가져와서 더함

foreach ($search_results as $result) {

    $wr_2 = intval(str_replace(",", "", $result['wr_2']));

    $search_total += $wr_2;

    // 검색 결과 표시

    // ...

}</p>

<p>// 검색된 게시물의 wr_2 총합 출력

echo "검색 결과 총합: " . number_format($search_total);

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

답변에 대한 댓글 2개

m
masahide
2년 전
친절하신 답변 감사합니다.
알려주신 방법을 어떤식으로 넣어야 하는지는 모르겠는데,
일단 그냥 넣어보이 에러가 나네요.
시간두고 테스트 해보고 잘 안되면 새로 질문 올리겠습니다.
감사합니다.
웹메이킹
2년 전
안되시는 부분의 관련 소스코드를 공유해 주시는게 구체적인 답변을 받으실 수 있으실 거라 생각합니다.

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

</p>

<p><script>

total_number = 0;

<?php for ($i=0; $i<count($list); $i++) echo "total_number += Number(('".$list[$i]['wr_2']."').replaceAll(',', ''));"; ?>

document.write(total_number);

</script></p>

<p>

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

답변에 대한 댓글 1개

m
masahide
2년 전
친절하신 답변 감사합니다.
그런데, 알려주신 내용을 어디에 넣어야 하는 건가요?

그냥 원하는 곳에 넣어도 아무 내용 안나오고,

for문
$list[$i]['wr_2'];

$list[$i]['wr_2'] = number_format($list[$i]['wr_2'], 0, '.', '');
로 바꾼후 원하는 곳에 넣어도 아무 내용이 안나오네요.

아...
그리고
for문
$list[$i]['wr_2'];

$list[$i]['wr_2'] = number_format($list[$i]['wr_2'], 0, '.', '');
로 바꾸면,

기존에 각 게시물 wr_2의 값이 100,000 이라면 100 이렇게 바뀌어 보여지고요.

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

c
2년 전

음 리스트 페이지에서 현재 페이지의 wr_2 총 합을 구하려면

제가 생각하는 방법은 sql 쿼리는 건드리지않고.... 스크립트로 구현할것 같아요;;

 

</p>

<p><span class="sum-item sound_only"><?php echo str_replace(',', '', $list[$i]['wr_2']); // 콤마 제외 숫자만 가져옴 ?></span></p>

<p>

이런식으로 각 게시글 li 거나 tr 이거나 안에 눈에 보이지않는 데이터를 불러와서

스크립트로 .sum-item 에 담긴 숫자들의 합을 구해서 상단에 대입해줄 것 같아요...;;

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

답변에 대한 댓글 2개

m
masahide
2년 전
친절하신 답변 감사합니다.
알려주신 내용만 넣는것이 아니라 이걸 참고해서 구현을 해야 하는거 같네요.
c
coDribble
2년 전
[code]
const curPageTotal = document.getElementById(상단에 출력할 요소의 선택자);
const sumItem = document.querySelectorAll('.sum-item');
let sum = 0;

sumItem.forEach((item) => {
sum += paseInt(item.innerText);
});

currentTotal.innerText = number_format(sum);
[/code]

이런식으로 스크립트 작업해서 각 페이지의 wr_2 합을 구하고 상단에 출력시킬 것 같아요;;

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

$list[$i]['wr_2'] = number_format($list[$i]['wr_2'], 0, '.', '');

 

이렇게 변수를 바꾼 후 합산해 보세요.

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

답변에 대한 댓글 1개

m
masahide
2년 전
친절하신 답변 감사합니다.
$list[$i]['wr_2'];

$list[$i]['wr_2'] = number_format($list[$i]['wr_2'], 0, '.', '');
로 변경하라는 말씀이신가요?

이렇게 해도 아무런 변화가 없어서요.

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

cuwaaang
2년 전

1. php 콤마제거후 합산하고 ex) str_replace() 사용

number_format으로 콤마다시추가

2. php tot_price 변수를 javascript 변수에 넣어서 html에 넣는방법이있겠네요

3. 따로 합산쿼리를 추가해야겠네요

for문 위에다가 print_r($sql) 쳐보시면 쿼리가나올겁니다

검색후 쿼리 참고해서 select sum(wr_2) as wr_2_sum from ___ where 검색쿼리~ 이런느낌

3번을 쿼리추가해서 해결하면 1,2번이 자연스럽게 해결되긴하겠네요

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

답변에 대한 댓글 1개

m
masahide
2년 전
친절하신 답변 감사합니다.
제가 실력이 딸려서 알려주신 방법을 적용을 잘 못하겠습니다.
일단 이리저리 더 수정해 보겠습니다.

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

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

로그인