게시판 리스트에서 여분필드 값의 총합 구하기 질문입니다. 채택완료
안녕하세요.
모든 게시물 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
답변에 대한 댓글 6개
$total2 = sql_fetch(" select format(sum(replace(wr_2,',','')),0) as sum2 from $write_table ");
echo $total2['sum2'];
?>
덕분에 일단 한가지 해결하였습니다.
<?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) ?>
댓글을 작성하려면 로그인이 필요합니다.
다음과 같은 방법도 있으니 참고해보세요
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개
알려주신 방법을 어떤식으로 넣어야 하는지는 모르겠는데,
일단 그냥 넣어보이 에러가 나네요.
시간두고 테스트 해보고 잘 안되면 새로 질문 올리겠습니다.
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
</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개
그런데, 알려주신 내용을 어디에 넣어야 하는 건가요?
그냥 원하는 곳에 넣어도 아무 내용 안나오고,
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 이렇게 바뀌어 보여지고요.
댓글을 작성하려면 로그인이 필요합니다.
음 리스트 페이지에서 현재 페이지의 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개
알려주신 내용만 넣는것이 아니라 이걸 참고해서 구현을 해야 하는거 같네요.
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개
$list[$i]['wr_2'];
를
$list[$i]['wr_2'] = number_format($list[$i]['wr_2'], 0, '.', '');
로 변경하라는 말씀이신가요?
이렇게 해도 아무런 변화가 없어서요.
댓글을 작성하려면 로그인이 필요합니다.
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개
제가 실력이 딸려서 알려주신 방법을 적용을 잘 못하겠습니다.
일단 이리저리 더 수정해 보겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
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 ')'
에러나서요.