채택완료

각각 게시판에서 출력된 게시물 숫자를 더하려면 - 2

2017-10-13 (금) 15:57:41 2,726

안녕하세요?

항상 건강하십시오~

다시 한 번 올립니다. 죄송합니다.

다음의 팁을 사용하고 있습니다.

* 각 게시판의 24시간 이내 새로운 글 숫자 표시하기 → https://sir.kr/g5_tip/6373 

그런데,

자유게시판의 24시간 이내 게시물은 <?php echo new_count("free"); ?> 이것을 사용하여 10개로 출력이 되어 있고 

질문답변 게시판의 24시간 이내의 게시물은 <?php echo new_count("qna"); ?> 이것을 사용하여 7개로 출력이 되고 있다면 이것을 더하는 방법은 어떻게 해야 하는지요?

 

즉, <?php echo new_count("free"); ?> + <?php echo new_count("qna"); ?> = 17개로 출력을 하려면 어떻게 해야 하는지요? 

이 두 개를 나란히 하여 따로따로 두면 출력이 잘 됩니다.

<?php echo new_count("free") + new_count("qna"); ?>

<?=(intval(new_count(free))+intval(new_count(qna))); ?> 

......,

......,

기초가 없다 보니까 위처럼 이렇게 저렇게 해도 안 되고 있습니다.

좋은 방법을 알려주시면 감사하겠습니다.

오늘도 좋은 하루 되십시오~^^)

답변 3개 / 댓글 3개

채택된 답변
+20 포인트

function new_count(){

    $cnt = 0;

    foreach (func_get_args() as $table_id) {        

        // 여기는 오늘과 글쓴 날짜를 비교합니다.

        $tmp_write_table = G5_TABLE_PREFIX."write_".$table_id;  // 해피정님 제안코드로 수정

        $row = sql_fetch(" select count(*) cnt from $tmp_write_table where wr_datetime >= date_add(now(), interval -1000 day) and wr_is_comment=0 "); // 댓글 제외

        $cnt += $row['cnt'];

    }

    return $cnt ? " <font style='font-weight:normal;font-size:12px;color:blue';>(".$cnt.")</font>" : '';

}

echo new_count('free', 'qna'); 

답변에 대한 댓글 2개

잘 해결하였습니다.
그런데 숫자가 엄청나와서 깜짝 놀랐습니다.
-1000 day 로 되어 있었네요~
-1day로 바꿨더니 잘 됩니다.
오늘도 좋은 하루 되시기 바랍니다.
감사합니다.
제시하신 코드가 훨씬 좋네요~
한 게시판을 사용하거나 두 개 세개의 게시판을 합할 수도 있고~^^)
https://sir.kr/g5_tip/6373 여기에다 슈와이님의 코드도 첨부하였습니다.
감사합니다.
2017-10-13 (금) 16:27:57

일단 

리턴할때 

$str_cnt .= " <font style='font-weight:normal;font-size:12px;color:blue';>(".$total_count.")</font>";  


숫자가 아닌 html 태그까지 리턴하는데 이값을 서버측에서 계산할 수 있을까요?;;

아래처럼 테스트 해보니 잘 됩니다

Copy
<?php //24시간 이내의 글 수 알아내기 function new_count($table_id){ 	$tmp_write_table = G5_TABLE_PREFIX."write_".$table_id;	$sql2 = "select * from $tmp_write_table where wr_datetime >= date_add(now(), interval -1 day) ";	// 새로운 글이 몇 개 있는지 확인합니다. 	$result2 = sql_query($sql2); 	$total_count = sql_num_rows($result2); 	if ($total_count > 0) { 	$str_cnt = $total_count; 	return $str_cnt; 	} 	else { 	$str_cnt = ""; 	return $str_cnt; 	} } ?> <?phpecho (int)(new_count("test")+(int)new_count("test2"));?>


답변에 대한 댓글 1개

감사합니다.
그런데 head.php에 이전 것은 다 없애고 그대로 넣고 실행을 하니 그 위치 아래로는 작동이 되지 않습니다.
그리고, index.php 상단에 그대로 넣어보면 작동이 멈춰 아무 것도 나타나지 않습니다.
구문에 오류가 있는 것 같습니다.
대부분을 알려주셨는데 해결을 하지 못하고 있습니다....ㅜ
2017-10-13 (금) 16:24:05

해당 함수로 리턴되는 값의 형태는, https://sir.kr/g5_tip/6373 

"<font style='font-weight:normal;font-size:12px;color:blue';>10</font>"

"<font style='font-weight:normal;font-size:12px;color:blue';>7</font>"

과 같은 형태입니다.

그래서 두 리턴값의 + 가 의도한 것과 같은 결과대로 나오지 않았던 것입니다.

"10" 과 "7" 로 리턴되는 형태라면 "10" + "7" 은 "17과 같이 나오게 됩니다.

해당 function new_count() 를 10, 7 과 같은 형태의 숫자만 리턴되도록 변경해주고,

출력하는 곳의 태그는 직접 구성해 주는 방식으로 하면 됩니다.

(function new_count() 하단을 다음과 같이 수정)

ex.

Copy
if ($total_count > 0) { return $total_count; } else { return $total_count;}

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