[재질문].. 포인트순위 .. '페이징'과 관련.... 정보
[재질문].. 포인트순위 .. '페이징'과 관련....본문
비슷한 글을 다시 올려 죄송합니다..근데..아무리해도 막히고 이해가 안되는 부분이 있어서
다시 글을 올립니다. (리플도움주신 'sjsjin'님께 감사드립니다.)
도움을 받아서 이래저래 하다가....일단 아래처럼 코드를 새로 수정했습니다.
- 수정이라기 보다 있는것을 이리저리 그냥 맞춰봤습니다 -_- ;;
[회원 포인트 순위 확인 : point_rank.php]
<?
// 상대 경로
$g4_path = "../gnuboard";; // 그누보드 경로지정
include_once("$g4_path/common.php");
include_once("$g4[path]/lib/latest.lib.php");
define("_CO_POINT_RANK_", TRUE);
$g4[title] = "";
$html_title ="포인트순위"; // 문서타이틀
include_once("head.php");
echo "<script language=\"javascript\" src=\"$g4[path]/js/sideview.js\"></script>\n";
?>
<? // 회원만 페이지를 볼수있도록 함
if (!$member[mb_id]) {
echo "
<script language='javascript'>
alert('회원만 이용가능합니다.');
history.go(-1);
</script>";
exit;
}
?>
<table align=center width=100% cellpadding=0 cellspacing=5 border=0 style='border=1px solid #cccccc'>
<tr><td valign=top colspan=2 class=lh>
<?
if ($member[mb_id]) // 최고관리자는 안보이게 처러 "$config[cf_admin]" <-- 관리자 아이디를 뜻함.
{
$sql = " select count(mb_id) as cnt from $g4[member_table]
where mb_id <> '$config[cf_admin]' and mb_point >= '$member[mb_point]' order by mb_point desc ";
$row = sql_fetch($sql);
echo "· 현재 회원님의 포인트 순위는 대략(?) <B>".number_format($row[cnt])."등</B> 입니다.";
}
$sql = " select sum(mb_point) as sum_point from $g4[member_table]";
$row = sql_fetch($sql);
$sum_point = $row[sum_point];
echo "<br>· 전체 포인트 : <B>".number_format($sum_point) . "점</b><br>";
?>
</td></tr>
</table>
<br>
<table align=center width=100% cellpadding=0 cellspacing=0 border=0>
<tr><td valign=top style='line-height:150%;'>
<? // 회원별 순위및 포인트내역
$sql = " select count(*) from $g4[member_table] ";
$row = sql_fetch($sql);
$total_count = $row[0];
$rows = 100;
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$mod = 25;
//-- -----{위 수정} 최고관리자는 안보이게 처러
$sql = " select * from $g4[member_table]
where mb_id <> '$config[cf_admin]' and mb_level < '5'
order by mb_point desc, mb_today_login desc
limit $from_record, $rows ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++){
if ($i && $i%$mod==0) {
echo "</td><td valign=top style='line-height:150%;'>";
}
$rank = (($page - 1) * $rows) + $i + 1;
$name = get_sideview($row[mb_id], $row[mb_nick], $row[mb_email], $row[mb_homepage]);
$point = number_format($row[mb_point]);
echo "<table align=center width=95% class=box cellpadding=4 cellspacing=0 border=0 style='border=1px solid #cccccc'>";
echo "<tr height=30>";
echo "<td height=20>$rank. $name</td>";
echo "<td align=right><font color=#FF9900>{$point}점</font></td>";
echo "</tr></table>";
echo "<table><tr><td></td></tr></table>";
}
?>
</td></tr>
</table>
<?
$page = get_paging($config[cf_write_pages], $page, $total_page, "?point_rank.php&page=");
echo "<p><table width=100% cellpadding=0 cellspacing=0><tr><td align=center>$page</td></tr></table><br><br>";
?>
<? include_once("tail.php"); ?>
------------------------------------------------------------------------------------------------------------
위에서.....$total_count = $row[0]; <--- 이부분이 좀 문제가 있는거 같습니다.
$total_count = $row[0]; 을 그냥 적어서 화면을 보면 페이징이 안나타나고
$total_count = 500; ... 이렇게 임의의 숫자를 넣어주면 페이징이 나타납니다.
위와 관련된 구문은 아래와 같습니다.
$sql = " select count(*) from $g4[member_table] ";
$row = sql_fetch($sql);
$total_count = $row[0];
전체회원수를 제대로 가져오지 못해서 생기는 문제인거 같은데
왜 이런 현상이 생기는지..뭐가 문제인지...좀 알려주세요..부탁드립니다.
다시 글을 올립니다. (리플도움주신 'sjsjin'님께 감사드립니다.)
도움을 받아서 이래저래 하다가....일단 아래처럼 코드를 새로 수정했습니다.
- 수정이라기 보다 있는것을 이리저리 그냥 맞춰봤습니다 -_- ;;
[회원 포인트 순위 확인 : point_rank.php]
<?
// 상대 경로
$g4_path = "../gnuboard";; // 그누보드 경로지정
include_once("$g4_path/common.php");
include_once("$g4[path]/lib/latest.lib.php");
define("_CO_POINT_RANK_", TRUE);
$g4[title] = "";
$html_title ="포인트순위"; // 문서타이틀
include_once("head.php");
echo "<script language=\"javascript\" src=\"$g4[path]/js/sideview.js\"></script>\n";
?>
<? // 회원만 페이지를 볼수있도록 함
if (!$member[mb_id]) {
echo "
<script language='javascript'>
alert('회원만 이용가능합니다.');
history.go(-1);
</script>";
exit;
}
?>
<table align=center width=100% cellpadding=0 cellspacing=5 border=0 style='border=1px solid #cccccc'>
<tr><td valign=top colspan=2 class=lh>
<?
if ($member[mb_id]) // 최고관리자는 안보이게 처러 "$config[cf_admin]" <-- 관리자 아이디를 뜻함.
{
$sql = " select count(mb_id) as cnt from $g4[member_table]
where mb_id <> '$config[cf_admin]' and mb_point >= '$member[mb_point]' order by mb_point desc ";
$row = sql_fetch($sql);
echo "· 현재 회원님의 포인트 순위는 대략(?) <B>".number_format($row[cnt])."등</B> 입니다.";
}
$sql = " select sum(mb_point) as sum_point from $g4[member_table]";
$row = sql_fetch($sql);
$sum_point = $row[sum_point];
echo "<br>· 전체 포인트 : <B>".number_format($sum_point) . "점</b><br>";
?>
</td></tr>
</table>
<br>
<table align=center width=100% cellpadding=0 cellspacing=0 border=0>
<tr><td valign=top style='line-height:150%;'>
<? // 회원별 순위및 포인트내역
$sql = " select count(*) from $g4[member_table] ";
$row = sql_fetch($sql);
$total_count = $row[0];
$rows = 100;
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$mod = 25;
//-- -----{위 수정} 최고관리자는 안보이게 처러
$sql = " select * from $g4[member_table]
where mb_id <> '$config[cf_admin]' and mb_level < '5'
order by mb_point desc, mb_today_login desc
limit $from_record, $rows ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++){
if ($i && $i%$mod==0) {
echo "</td><td valign=top style='line-height:150%;'>";
}
$rank = (($page - 1) * $rows) + $i + 1;
$name = get_sideview($row[mb_id], $row[mb_nick], $row[mb_email], $row[mb_homepage]);
$point = number_format($row[mb_point]);
echo "<table align=center width=95% class=box cellpadding=4 cellspacing=0 border=0 style='border=1px solid #cccccc'>";
echo "<tr height=30>";
echo "<td height=20>$rank. $name</td>";
echo "<td align=right><font color=#FF9900>{$point}점</font></td>";
echo "</tr></table>";
echo "<table><tr><td></td></tr></table>";
}
?>
</td></tr>
</table>
<?
$page = get_paging($config[cf_write_pages], $page, $total_page, "?point_rank.php&page=");
echo "<p><table width=100% cellpadding=0 cellspacing=0><tr><td align=center>$page</td></tr></table><br><br>";
?>
<? include_once("tail.php"); ?>
------------------------------------------------------------------------------------------------------------
위에서.....$total_count = $row[0]; <--- 이부분이 좀 문제가 있는거 같습니다.
$total_count = $row[0]; 을 그냥 적어서 화면을 보면 페이징이 안나타나고
$total_count = 500; ... 이렇게 임의의 숫자를 넣어주면 페이징이 나타납니다.
위와 관련된 구문은 아래와 같습니다.
$sql = " select count(*) from $g4[member_table] ";
$row = sql_fetch($sql);
$total_count = $row[0];
전체회원수를 제대로 가져오지 못해서 생기는 문제인거 같은데
왜 이런 현상이 생기는지..뭐가 문제인지...좀 알려주세요..부탁드립니다.
댓글 전체
위 코드내용대로라면 정상입니다.
$total_count = $row[0]; 이 부분도 정상이고요.
g4에서는 배열첨자가 아닌 배열 인덱스를 사용하므로 $row[0] 과 같이 사용하는게 맞습니다.
위 내용으로봐서는 $total_count 에 값이 페이징을 넘길만큼 해당되지 않는 걸로 보입니다.
참고로 쿼리 메모리를 좀 줄이는 방법으로
$sql = " select count(*) from $g4[member_table] ";
를
$sql = " select count(mb_id) from $g4[member_table] ";
로 바꿔주시면 좋을 테구요...
정확히 테스트하시려면 관리자가 임의로 회원을 많이 생성해서 페이징 테스트를 하시면 될 것 같습니다.
혹은 $rows 를 5개나 10개 정도로 줄여서 해보셔도 되겠습니다.
$total_count = $row[0]; 이 부분도 정상이고요.
g4에서는 배열첨자가 아닌 배열 인덱스를 사용하므로 $row[0] 과 같이 사용하는게 맞습니다.
위 내용으로봐서는 $total_count 에 값이 페이징을 넘길만큼 해당되지 않는 걸로 보입니다.
참고로 쿼리 메모리를 좀 줄이는 방법으로
$sql = " select count(*) from $g4[member_table] ";
를
$sql = " select count(mb_id) from $g4[member_table] ";
로 바꿔주시면 좋을 테구요...
정확히 테스트하시려면 관리자가 임의로 회원을 많이 생성해서 페이징 테스트를 하시면 될 것 같습니다.
혹은 $rows 를 5개나 10개 정도로 줄여서 해보셔도 되겠습니다.
문제가 있는거 같다는 부분...
$sql = " select count(*) from $g4[member_table]
where where mb_id <> '$config[cf_admin]' and mb_level < '5' ";
$row = sql_fetch($sql);
$total_count = $row[0];
$sql = " select count(*) from $g4[member_table]
where where mb_id <> '$config[cf_admin]' and mb_level < '5' ";
$row = sql_fetch($sql);
$total_count = $row[0];
급하게 보느라 루프에 돌리는 쿼리문을 안봤군요...
위 '텍와이드'님의 말씀대로 위 쿼리문처럼 $total_count 쿼리문을 변경해 줘야 합니다.
위 '텍와이드'님의 말씀대로 위 쿼리문처럼 $total_count 쿼리문을 변경해 줘야 합니다.
두분의 리플 감사합니다...
아..근데...정말 이상하군요...전 안되네요....참고로 g3의 회원테이블을 g4로 변환해서 가져왔거든요.
현재는 200명정도인데...페이징을 할 정도의 숫자는 됩니다.
회원db를 살펴봐도 그쪽은 별 이상이 없는거같고...정말 미칠거 같네요.. -_- ;;
$total_count = $row[0]; <-- 이부분이 과연 정상인가 싶어 그다음줄에 echo 문으로 찍어보면 'Array'라고
나오는게...숫자가 나와야 할부분에 배열이 표시되는게 좀 이상하기도 하고.. -_-;;
....
위 질문에 사용된 코드가 전부인데...자꾸 질문드리기도 뭣하고...정말 난감하네요.
당체 뭐가 문제인지...
아..근데...정말 이상하군요...전 안되네요....참고로 g3의 회원테이블을 g4로 변환해서 가져왔거든요.
현재는 200명정도인데...페이징을 할 정도의 숫자는 됩니다.
회원db를 살펴봐도 그쪽은 별 이상이 없는거같고...정말 미칠거 같네요.. -_- ;;
$total_count = $row[0]; <-- 이부분이 과연 정상인가 싶어 그다음줄에 echo 문으로 찍어보면 'Array'라고
나오는게...숫자가 나와야 할부분에 배열이 표시되는게 좀 이상하기도 하고.. -_-;;
....
위 질문에 사용된 코드가 전부인데...자꾸 질문드리기도 뭣하고...정말 난감하네요.
당체 뭐가 문제인지...
아~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 이렇게 맹할수가............ -_-;;
팁앤테크에 있는 '포인트순위'프로그램을 사용하니 잘되네요.
http://www.sir.co.kr/bbs/board.php?bo_table=self_program&wr_id=1484
아마도 ... 아래구문이 정답인거 같습니다.
$sql = " select count(*) as cnt from $g4[member_table]";
$row = sql_fetch($sql);
$total_count = $row[cnt];
.....이것땜에 이틀을 놀았는데....(스스로에게 짜증만땅)....
위에 제가 올린 '자작프로그램'의 소소로는 되지 않고 팁앤테크의 소스로는 되는데...
원래의 소스와 위 구문을 빼고는 정확히 뭐가 차이인지는 몰겠지만...
어쨋건 리플 주신분들께 정말 고맙게 생각합니다. (리플이라도 없었으면 그냥 포기했을지도 몰랐겠네요 )
팁앤테크에 있는 '포인트순위'프로그램을 사용하니 잘되네요.
http://www.sir.co.kr/bbs/board.php?bo_table=self_program&wr_id=1484
아마도 ... 아래구문이 정답인거 같습니다.
$sql = " select count(*) as cnt from $g4[member_table]";
$row = sql_fetch($sql);
$total_count = $row[cnt];
.....이것땜에 이틀을 놀았는데....(스스로에게 짜증만땅)....
위에 제가 올린 '자작프로그램'의 소소로는 되지 않고 팁앤테크의 소스로는 되는데...
원래의 소스와 위 구문을 빼고는 정확히 뭐가 차이인지는 몰겠지만...
어쨋건 리플 주신분들께 정말 고맙게 생각합니다. (리플이라도 없었으면 그냥 포기했을지도 몰랐겠네요 )
저도 좀 이상했습니다.
포인트 순위 프로그램이 있는데...
다르게 만드시나 했지요...
포인트 순위 프로그램이 있는데...
다르게 만드시나 했지요...
^^
관리자님께서...위 프로그램을 '팁앤테크'와 '자작프~'에 함께 등록을 해두셨는데 '자작~'꺼는 현재와는 맞지 않는거 같네요 ..
관리자님께서...위 프로그램을 '팁앤테크'와 '자작프~'에 함께 등록을 해두셨는데 '자작~'꺼는 현재와는 맞지 않는거 같네요 ..