최근 한달간 포인트 누적순위 구하기는? > 그누3질답

그누3질답

최근 한달간 포인트 누적순위 구하기는? 정보

그누보드 최근 한달간 포인트 누적순위 구하기는?

본문

안녕하세요.. ^^;
인사가 너무 늦었지만 새해 복 많이 받으시길 빕니다.

이곳 SiR 에서 보여주는 방식( http://www.sir.co.kr/?doc=_cm_pointlist.php )에 추가하여 최근 한달간 누적 포인트를 표현( http://bbs.nozo.net/?doc=_point.php )하고 싶은데 프로그램에 문외한이라서 그런지 힘드네요. ㅠ,ㅠ

제가 구현하고 있는 화면의 소스는 박갑성님께서 올린 소스( http://www.sir.co.kr/?doc=bbs/gnuboard.php&bo_table=tiptech&wr_id=904 )를 그대로 사용했습니다.

여러 고수님들의 간절한 도움을 기다리면서 이만 줄입니다.

==================================================================

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

define("_DOCTYPE_", "DESIGN");

header_cache();

$subject = "POINT 순위";

$html_title = "POINT 순위";
$res_count = mysql_num_rows(mysql_query("select * from $cfg[table_member]")); // 총 데이터 수
?>

<p>
<table width='100%'>
<tr><td height=3 bgcolor=DADADA colspan=2></td></tr>
<tr>
<td height=30><b>최근 한달간 포인트 순위</b> (전체회원 총 <?=$res_count?> 명)</td>
<td height=30>
<table width=100% cellpadding=3 cellspacing=1>
<form name=fsearch method=get action='./' autocomplete='off'>
<input type=hidden name=doc value='<?=$doc?>'>
<tr>
<td align=left><? echo $listall ?></td>
<td align=right>
<select name=sselect class=cssselect>
            <option value='mb_name'>이름</option>
            <option value='mb_point'>포인트</option>
</select>
<input type=text name=stext class=input required itemname='검색어' value='<? echo $stext ?>'>
<input type=submit value='검색' class=cssbutton></td>
</tr>
</form>
</table>
</td>
</tr>
<tr><td height=1 bgcolor=DADADA colspan=2></td></tr>
</table>

<br>

<table width=99% align=center>
<tr><td valign=top style='line-height:150%;'>
<?
$sql_common = " from $cfg[table_member] ";

$sql_search = " where (1) and mb_id <> 'admin' ";
if ($stext) {
    $sql_search .= " and ( ";
    switch ($sselect) {
        case "mb_level" :
        case "mb_point" :
            $sql_search .= " ($sselect >= '$stext') ";
            break;
        default :
            $sql_search .= " ($sselect like '%$stext%') ";
            break;
    }
    $sql_search .= " ) ";
}

if (!$ssort) {
    $ssort  = "mb_datetime";
    $sorder = "desc";
}
$sql_order = " order by $ssort $sorder ";

$sql = " select count(*)
        $sql_common
        $sql_search
        $sql_order ";
$row = sql_fetch($sql);
$total_count = $row[0];

$rows = 30;
$total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함

$mod = 10;

$sql = " select *
          $sql_common
 $sql_search
          order by mb_point desc
          limit $from_record, $rows ";
$result = sql_query($sql);

$qstr = "sselect=$sselect&stext=$stext";

for ($i=0; $row=mysql_fetch_array($result); $i++) {
    if ($i && $i%$mod==0) {
        echo "</td><td valign=top style='line-height:150%;'>";
    }

    $name = gblayer($row[mb_id], cut_str($row[mb_name],12), $row[mb_email], $row[mb_homepage], "bbs");
    $point = number_format($row[mb_point]);
    $level = $row[mb_level];
echo "<table align=center cellpadding=4 class=box valign=top><tr>";
    echo "<td width=100 height=30><font color=777777>".((($page-1)*$rows)+$i+1).".</font> $name</td>";
    echo "<td width=100 align=right><font color=777777>(한달) / {$point}점</font></td>";
    echo "</tr></table><table width=100%><tr><td></td></tr></table>";
}
?>
<!-- 53번째 줄인 <font color=777777>".((($page-1)*$rows)+$i+1).".</font>을 /*  */ 처리 하시면 현재 그누보드포인트조회처럼 표현 됩니다. 즉 숫자(순위)표시가 안됩니다. -->
</td></tr>
</table>

<?
$pagelist = get_paging($default[de_write_pages], $page, $total_page, $rows, "./?doc=$doc&$qstr&page=");
if ($pagelist) {
    echo "<table width=100% cellpadding=3 cellspacing=1 height=1 bgcolor=DADADA><tr><td align=center></td></tr></table>\n";
    echo "<table width=100% cellpadding=3 cellspacing=1 height=7><tr><td align=center></td></tr></table>\n";
    echo "<table width=100% cellpadding=3 cellspacing=1><tr><td align=center>$pagelist</td></tr></table>\n";
}

if ($stext) {
    echo "<script language='javascript'>document.fsearch.sselect.value = '$sselect';</script>\n";
}
?>

<script language='javascript'>
    document.fsearch.stext.focus();
</script>

================================================================
  • 복사

댓글 전체

빠른 답변 감사합니다. 페이지리스트 문제는 알려주신 방법으로 해결했습니다.

참고로 위의 소스를 보면 디비의 테이블이 $cfg[table_member]에서 불러오는데, 이곳에는 포인트 합계만 있고, $cfg[table_point]에 포인트 내역이 존재합니다만 제가 구현할 줄 몰라서 이렇게 자문을 구합니다.
$pagelist = get_paging($default[de_write_pages], $page, $total_page, $rows, "./?doc=$doc&$qstr&page=");

페이지 안 넘어 가시는것은 위에서 $rows, 를 삭제해 주세요.

http://www.sir.co.kr/?doc=bbs/gnuboard.php&bo_table=tiptech&sselect=wr_name&stext=%C0%D3%C0%B1%C5%C3&soperator=0&page=1&wr_id=830

를 참고 하시면 좀더 해결이 쉽지 않을까 합니다.
저도 잘 모릅니다.^^b
© SIRSOFT
현재 페이지 제일 처음으로