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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
게시판 리스트에서 여분필드 값의 총합 구하기 질문입니다.

QA

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

본문

안녕하세요.
모든 게시물 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

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

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

친절하신 답변 감사합니다.
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 ')'
에러나서요.

사용하신 합계를 아래처럼 바꿔보세요.
<?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) ?>

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) ?>


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

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

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

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 이렇게 바뀌어 보여지고요.

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번이 자연스럽게 해결되긴하겠네요

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

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

 


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

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

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


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);


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

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

 

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


// 그누보드 게시물에서 wr_2 값을 가져옴
$wr_2 = "100,000";
// 콤마(,)를 제거
$wr_2 = str_replace(",", "", $wr_2);
// $wr_2를 정수로 변환
$wr_2 = intval($wr_2);
// 다른 숫자와 계산
$total = $wr_2 + 50000 + 70000;
// 결과 출력
echo "총합: " . number_format($total); // 콤마 포함 숫자 출력

 

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


// 게시판 상단에 총합 표시
$board_total = 0;
// 그누보드 게시물을 루프로 돌면서 각 게시물의 wr_2 값을 가져와서 더함
foreach ($board_posts as $post) {
    $wr_2 = intval(str_replace(",", "", $post['wr_2']));
    $board_total += $wr_2;
    // 게시물 내용 표시
    // ...
}
// 게시판 상단에 총합 표시
echo "게시판 상단 총합: " . number_format($board_total);

 

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


// 검색 결과 게시물의 wr_2 총합 초기화
$search_total = 0;
// 그누보드 검색 결과를 루프로 돌면서 각 검색된 게시물의 wr_2 값을 가져와서 더함
foreach ($search_results as $result) {
    $wr_2 = intval(str_replace(",", "", $result['wr_2']));
    $search_total += $wr_2;
    // 검색 결과 표시
    // ...
}
// 검색된 게시물의 wr_2 총합 출력
echo "검색 결과 총합: " . number_format($search_total);

친절하신 답변 감사합니다.
알려주신 방법을 어떤식으로 넣어야 하는지는 모르겠는데,
일단 그냥 넣어보이 에러가 나네요.
시간두고 테스트 해보고 잘 안되면 새로 질문 올리겠습니다.
감사합니다.

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

 

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

답변을 작성하시기 전에 로그인 해주세요.
전체 30
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT