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

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

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, '.', '');

 

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

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

회원로그인

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