회원 권한별, 랭킹을 뽑아내고 싶습니다.
본문
반갑습니다~ 다들 더위, 잘보내고 계시는가요~ㅎㅎ
다름이 아니라 , 하나 여쭤보고싶은게 있어서요.
현재 제 홈페이지에 회원 랭킹제도를 운영중인데요.권한별 랭킹으로 바꾸고 싶어서요...
현재는, 회원등급 구별없이 포인트로만 등수를 뽑아냅니다.
레벨상황: 현재 mesiana님의 포인트는 3400점 이고, 랭킹은 전체회원수 39명중 36등 입니다.
"레벨상황: 현재 <b>".$member[mb_id]."</b>님의 포인트는 <B>".$member[mb_point]."점</B>";
$sql = " select count(mb_id) as cnt from $g4[member_table]
where mb_point >= '$member[mb_point]' order by mb_point desc ";
$row = sql_fetch($sql);
$sql2 = " select count(mb_id) as cnt from $g4[member_table]";
$row2 = sql_fetch($sql2);
$total_count = $row2[cnt];
echo " 이고, 랭킹은 전체회원수 <b>".$total_count."</b>명중 <B>".number_format($row[cnt])."등</B> 입니다.<br>";
이것을,
레벨상황: 현재 mesiana님의 포인트는 3400점 이고, 랭킹은 A class 6명중 5등 입니다.
위의 방식으로, 표현하려면 어떻게 해야할까요? ㅠ_ㅠ;
Aclass 는, 아래와 같이 정의되어있습니다.
else if ($level = $row[mb_level] == 3)
$level="A Class";
포인트랭킹 페이지 주소는 http://tf1club.speeds.kr/bbs/point_rank.php 입니다.
아래에는, 이 페이지에서 사용된 rank.php 전문입니다.
부디 더운 여름이지만, 한줄기의 시원한 물꼬를 ,,,,부탁드립니다.
<?
if (!defined("_GNUBOARD_")) exit;
include_once("./_common.php");
include_once("$g4[path]/head.sub.php");
define("_CO_POINT_RANK_", TRUE);
$html_title = "포인트 랭킹";
$g4[title] = "" . $html_title;
?>
<?
if ($member[mb_level] < 1)
echo "<script>
alert('회원만 조회하실수 있습니다.');
location.href='/bbs/login.php?wr_id=&url=point_rank.php';
</script>";
?>
<style type="text/css">
<!--
.bk123 {
border: 1px solid #CCCCCC;
}
.bkbk {
border: 1px solid #999999;
}
-->
</style>
<table width="100%" border="0" cellpadding="0" cellspacing="0" >
<tr>
<td height="15" colspan="6" align="left" valign="top"></td>
</tr>
<tr>
<td height="100" colspan="6" align="left" valign="middle"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="bk123">
<tr>
<td height="35" style="padding-left:20px;">회원권한제도: <img src="/level_img/level5.gif"> A Class, <img src="/level_img/level6.gif"> P Class, <img src="/level_img/level7.gif"> C Class, <img src="/level_img/level8.gif"> V Class, <img src="/level_img/level9.gif"> Staff, <img src="/level_img/level10.gif"> Master. </td>
</tr>
<?
if ($member[mb_id])
{
?>
<tr>
<td height="35" style="padding-left:20px;"><?
$sql = " select sum(mb_point) as sum_point from $g4[member_table]";
$row = sql_fetch($sql);
$sum_point = $row[sum_point];
echo "레벨상황: 현재 <b>".$member[mb_id]."</b>님의 포인트는 <B>".$member[mb_point]."점</B>";
$sql = " select count(mb_id) as cnt from $g4[member_table]
where mb_point >= '$member[mb_point]' order by mb_point desc ";
$row = sql_fetch($sql);
$sql2 = " select count(mb_id) as cnt from $g4[member_table]";
$row2 = sql_fetch($sql2);
$total_count = $row2[cnt];
echo " 이고, 랭킹은 전체회원수 <b>".$total_count."</b>명중 <B>".number_format($row[cnt])."등</B> 입니다.<br>";
?></td>
</tr>
<? } ?>
</table></td>
</tr>
<tr >
<td width="10%"><b><font color="blue">랭킹</font></b></td>
<td width="12%" background="img/title_bg.gif" height="25"><b><font color="blue">닉네임</font></b></td>
<td width="18%" background="img/title_bg.gif" height="25"><b><font color="blue">레벨 & 경험치</font></b></td>
<td width="20%" background="img/title_bg.gif" height="25"><b><font color="blue">아이디</font></b></td>
<td width="20%" background="img/title_bg.gif" align="right" height="25"><b><font color="blue">회원권한</font></b></td>
<td width="20%" align="right" background="img/title_bg.gif" ><b><font color="blue">포인트</font></b></td>
</tr>
<tr>
<td colspan="6" height="5"></td>
</tr>
<tr>
<td colspan="6" height="1" bgcolor="#CCCCCC"></td>
</tr>
<tr>
<td colspan="6" height="5"></td>
</tr>
<?
$sql = " select count(*) as cnt from $g4[member_table]";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = 20;
$total_page = ceil($total_count / $rows);
if ($page == "") { $page = 1; }
$from_record = ($page - 1) * $rows;
$mod = 48;
$tbl_col =2 ;
$tbl_col_sep = (int)($mod / $tbl_col) + ($mod % $tbl_col) ;
if($_GET[keyword]!="")
{
if($_GET[type]==0)
{
$keyword_yi="where mb_nick='$_GET[keyword]'";
}
if($_GET[type]==1)
{
$keyword_yi="where mb_name='$_GET[keyword]'";
}
if($_GET[type]==2)
{
$keyword_yi="where mb_id='$_GET[keyword]'";
}
}
$sql = " select * from $g4[member_table] $keyword_yi
order by mb_point desc, mb_today_login desc
limit $from_record, $rows ";
$sql11 = " select count(*) from $g4[member_table] $keyword_yi
order by mb_point desc, mb_today_login desc
";
$result = sql_query($sql);
$result11 = sql_query($sql11);
//echo $rsn11;
$rsn11=mysql_fetch_array($result11);
if($rsn11[0]==0)
{
if($_GET[type]==0)
{
$ty="닉네임";
}
if($_GET[type]==1)
{
$ty="이름";
}
if($_GET[type]==2)
{
$ty="아이디";
}
echo "<tr><td colspan=6 align=center height=150> 검색하신 $ty(<font color=red>$_GET[keyword]</font>) 에 대한 검색결과가 없습니다</td></tr>";
}
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$rank = (($page - 1) * $rows) + $i + 1;
$point = number_format($row[mb_point]);
$id = $row[mb_id];
?>
<tr height="30" >
<td width="13%" height="35" ><?=$rank?></td>
<td height="35"> <a title="쪽지보내기" onfocus='this.blur()' style="FILTER: blendTrans(duration=0.7); CURSOR: pointer" onclick="window.open('/bbs/memo_form.php?me_recv_mb_id=<?=$row[mb_id]?>','www_yiwuauction_com1','width=602,height=521,toolbars=no,resizable=no,scrollbars=no')"><?=$row[mb_nick]?></a> </td>
<td height="35"><?=exp_bar($row[mb_id],$row[mb_point],1);?></td>
<td width="20%" height="35"><a title="정보보기" onfocus='this.blur()' style="FILTER: blendTrans(duration=0.7); CURSOR: pointer" onclick="window.open('/bbs/profile.php?mb_id=<?=$row[mb_id]?>','www_yiwuauction_com2','width=602,height=521,toolbars=no,resizable=no,scrollbars=no')"><b><?=$row[mb_id]?></b></a></td>
<td width="24%" height="35" align="right">
<?
if ($level = $row[mb_level] == 10)
$level="Master";
else if ($level = $row[mb_level] == 7)
$level="Staff";
else if ($level = $row[mb_level] == 6)
$level="V Class";
else if ($level = $row[mb_level] == 5)
$level="C Class";
else if ($level = $row[mb_level] == 4)
$level="P Class";
else if ($level = $row[mb_level] == 3)
$level="A Class";
else if ($level = $row[mb_level] == 2)
$level="New A Class";
else if ($level = $row[mb_level] == 0)
$level="비회원";
?>
<font color=green><?=$level?></font> </td>
<td width="20%" height="35" align="right"><font color="#FF0000"><?=$point?> 점</font></td>
</tr>
<tr>
<td colspan="6" height="1" background="img/dot_line.gif"></td>
</tr>
<? } ?>
<tr>
<td colspan="6" height="30"></td>
</tr>
<tr>
<td height="20" colspan="6">
<table width="651" height="20" border="0" cellpadding="0" cellspacing="0">
<form id="form1" name="form1" method="get" action=""><tr>
<td width="423" valign="middle">
<?
if($_GET[keyword]=="")
{
$page = get_paging($config[cf_write_pages], $page, $total_page, "?$qstr&page=");
echo "<p><table width=100% cellpadding=0 cellspacing=0><tr><td align=center>$page</td></tr></table>";
}
?></td>
<td width="187" align="right" valign="middle">
<div align="center">
<select name="type" id="type">
<option value="0" <?php if($_GET[type]==0){ echo "selected";}?>>닉네임</option>
<option value="1" <?php if($_GET[type]==1){ echo "selected";}?>>이름</option>
<option value="2" <?php if($_GET[type]==2){ echo "selected";}?>>아이디</option>
</select>
<input name="keyword" type="text" class="bkbk" id="keyword" size="15" value="<?=$_GET[keyword]?>"/>
</div> </td>
<td width="41" align="right"><input type="image" name="imageField" src="img/btn_post_search.gif" /></td>
</tr></form>
</table></td>
</tr>
<tr>
<td height="15" colspan="6"> </td>
</tr>
</table>
답변 4
<td height="35" style="padding-left:20px;">
<?
$sql1 = "select count(mb_id) as cnt from ".$g4[member_table]." where mb_point >= '".$member[mb_point]."' and mb_level = '".$member[mb_level]."' order by mb_point desc";
$row1 = sql_fetch($sql1);
$sql2 = "select count(mb_id) as cnt from ".$g4[member_table]." where mb_level = '".$member[mb_level]."'";
$row2 = sql_fetch($sql2);
?>
레벨상황 : 현재 <?=$member[mb_id]?>님의 포인트는 <?=$member[mb_point]?>점 이고, 랭킹은 <?=$member[mb_level]?> class <?=$row2[cnt]?>명중 <?=$row1[cnt]?>등 입니다.
또 오타가 나왔네요...
meber이라고 적었었네요 ㅜㅜ
지금 'class <?=$row2[cnt]?>명중 <?=$row1[cnt]?>등 입니다.'를 제거하니깐 잘 나온다고 하셨는데
'class <?=$row2[cnt]?>명중 <?=$row1[cnt]?>등 입니다.'이게 쿼리문이 잘못되어서 오류가 나는거에요... 쿼리문쪽 오타를 더 찾아봐야할것같네요 ^^
!-->레벨상황: 현재 mesiana님의 포인트는 3400점 이고, 랭킹은 A class 6명중 5등 입니다.
맴버레벨을 조건에 추가해주시면 될것같네요.
$sql1 = "select count(mb_id) as cnt from $g4[member_table] where mb_point >= '$member[mb_point]' and mb_level = '$meber[mb_level]' order by mb_point desc";
$row1 = sql_fetch($sql);
$sql2 = "select count(mb_id) as cnt from $g4[member_table] where mb_level = '$member[mb_level]'";
$row2 = sql_fetch($sql2);
echo = "레벨상황 : 현재 ".$member[mb_id]."님의 포인트는 ".$member[mb_point]."점 이고, 랭킹은 ".$member[mb_level]." class ".row2[cnt]."명중 ".row1[cnt]."등 입니다."
$member[mb_level]이 로그인시 저장된 해당맴버의 레벨이 맞다는 가정이에요.
첫번째조건문 my_point >= '$member[mb_point]' 는 나보다 포인트가 큰사람을 검색하는거죠.
거기에다가 mb_level(멤버레벨) = '$member[mb_level]'(나의 멤버레벨)을 넣으면 나의 멤버 레벨과 같은 레벨을 가진 사람들을 추가하는거에요.
그러면 나의 멤버 레벨과 같은 사람들중에 나보다 포인트가 큰사람을 카운트해서 나타나게 해주겠죠 ^^
보내주신 대로, 적용해봤는데; 오류가 나네요;;
너무 초보라... ㅠ_ㅠ;; 너무 힘들어요;;
echo = 이라고 적어서 그런가 싶어서 = 을 빼고 echo 만 적어봤는데도 .. 오류가 뿜뿌질을;;ㅠ_ㅠ
드래곤님께서 14:55에 답변주신 내용을 그대로 붙여넣기 해봤는데; 그줄에만 오류가 난다고 빨간줄표시됩니다.
그래서, 그냥 무시하고, 적용해봤는데, 페이지 자체가 하얗게 안나오더라구요....
단순 오타인가... 아니면 뭔가 다른게 빠졌나 싶어서, rank.php 전체 다시올려볼게요.
너무 감사하고 죄송해요; 자세히 가르쳐주시는데 못알아먹어서... 귀찮게 해드리는거같아서요...ㅠ_ㅠ
48번째 줄이 잘못되었다고 빨간색으로 표시되어있습니다.
<?
if (!defined("_GNUBOARD_")) exit;
include_once("./_common.php");
include_once("$g4[path]/head.sub.php");
define("_CO_POINT_RANK_", TRUE);
$html_title = "포인트 랭킹";
$g4[title] = "" . $html_title;
?>
<?
if ($member[mb_level] < 1)
echo "<script>
alert('회원만 조회하실수 있습니다.');
location.href='/bbs/login.php?wr_id=&url=point_rank.php';
</script>";
?>
<style type="text/css">
<!--
.bk123 {
border: 1px solid #CCCCCC;
}
.bkbk {
border: 1px solid #999999;
}
-->
</style>
<table width="100%" border="0" cellpadding="0" cellspacing="0" >
<tr>
<td height="15" colspan="6" align="left" valign="top"></td>
</tr>
<tr>
<td height="100" colspan="6" align="left" valign="middle"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="bk123">
<tr>
<td height="35" style="padding-left:20px;">회원권한제도: <img src="/level_img/level5.gif"> A Class, <img src="/level_img/level6.gif"> P Class, <img src="/level_img/level7.gif"> C Class, <img src="/level_img/level8.gif"> V Class, <img src="/level_img/level9.gif"> Staff, <img src="/level_img/level10.gif"> Master. </td>
</tr>
<?
if ($member[mb_id])
{
?>
<tr>
<td height="35" style="padding-left:20px;"><?
$sql1 = "select count(mb_id) as cnt from $g4[member_table] where mb_point >= '$member[mb_point]' and mb_level = '$meber[mb_level]' order by mb_point desc";
$row1 = sql_fetch($sql);
$sql2 = "select count(mb_id) as cnt from $g4[member_table] where mb_level = '$member[mb_level]'";
$row2 = sql_fetch($sql2);
echo "레벨상황 : 현재 ".$member[mb_id]."님의 포인트는 ".$member[mb_point]."점 이고, 랭킹은 ".$member[mb_level]." class ".$row2[cnt]."명중 ".$row1[cnt]."등 입니다."
?>
</td>
</tr>
<? } ?>
</table></td>
</tr>
<tr >
<td width="10%"><b><font color="blue">랭킹</font></b></td>
<td width="12%" background="img/title_bg.gif" height="25"><b><font color="blue">닉네임</font></b></td>
<td width="18%" background="img/title_bg.gif" height="25"><b><font color="blue">레벨 & 경험치</font></b></td>
<td width="20%" background="img/title_bg.gif" height="25"><b><font color="blue">아이디</font></b></td>
<td width="20%" background="img/title_bg.gif" align="right" height="25"><b><font color="blue">회원권한</font></b></td>
<td width="20%" align="right" background="img/title_bg.gif" ><b><font color="blue">포인트</font></b></td>
</tr>
<tr>
<td colspan="6" height="5"></td>
</tr>
<tr>
<td colspan="6" height="1" bgcolor="#CCCCCC"></td>
</tr>
<tr>
<td colspan="6" height="5"></td>
</tr>
<?
$sql = " select count(*) as cnt from $g4[member_table]";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = 20;
$total_page = ceil($total_count / $rows);
if ($page == "") { $page = 1; }
$from_record = ($page - 1) * $rows;
$mod = 48;
$tbl_col =2 ;
$tbl_col_sep = (int)($mod / $tbl_col) + ($mod % $tbl_col) ;
if($_GET[keyword]!="")
{
if($_GET[type]==0)
{
$keyword_yi="where mb_nick='$_GET[keyword]'";
}
if($_GET[type]==1)
{
$keyword_yi="where mb_name='$_GET[keyword]'";
}
if($_GET[type]==2)
{
$keyword_yi="where mb_id='$_GET[keyword]'";
}
}
$sql = " select * from $g4[member_table] $keyword_yi
order by mb_point desc, mb_today_login desc
limit $from_record, $rows ";
$sql11 = " select count(*) from $g4[member_table] $keyword_yi
order by mb_point desc, mb_today_login desc
";
$result = sql_query($sql);
$result11 = sql_query($sql11);
//echo $rsn11;
$rsn11=mysql_fetch_array($result11);
if($rsn11[0]==0)
{
if($_GET[type]==0)
{
$ty="닉네임";
}
if($_GET[type]==1)
{
$ty="이름";
}
if($_GET[type]==2)
{
$ty="아이디";
}
echo "<tr><td colspan=6 align=center height=150> 검색하신 $ty(<font color=red>$_GET[keyword]</font>) 에 대한 검색결과가 없습니다</td></tr>";
}
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$rank = (($page - 1) * $rows) + $i + 1;
$point = number_format($row[mb_point]);
$id = $row[mb_id];
?>
<tr height="30" >
<td width="13%" height="35" ><?=$rank?></td>
<td height="35"> <a title="쪽지보내기" onfocus='this.blur()' style="FILTER: blendTrans(duration=0.7); CURSOR: pointer" onclick="window.open('/bbs/memo_form.php?me_recv_mb_id=<?=$row[mb_id]?>','www_yiwuauction_com1','width=602,height=521,toolbars=no,resizable=no,scrollbars=no')"><?=$row[mb_nick]?></a> </td>
<td height="35"><?=exp_bar($row[mb_id],$row[mb_point],1);?></td>
<td width="20%" height="35"><a title="정보보기" onfocus='this.blur()' style="FILTER: blendTrans(duration=0.7); CURSOR: pointer" onclick="window.open('/bbs/profile.php?mb_id=<?=$row[mb_id]?>','www_yiwuauction_com2','width=602,height=521,toolbars=no,resizable=no,scrollbars=no')"><b><?=$row[mb_id]?></b></a></td>
<td width="24%" height="35" align="right">
<?
if ($level = $row[mb_level] == 10)
$level="Master";
else if ($level = $row[mb_level] == 7)
$level="Staff";
else if ($level = $row[mb_level] == 6)
$level="V Class";
else if ($level = $row[mb_level] == 5)
$level="C Class";
else if ($level = $row[mb_level] == 4)
$level="P Class";
else if ($level = $row[mb_level] == 3)
$level="A Class";
else if ($level = $row[mb_level] == 2)
$level="New A Class";
else if ($level = $row[mb_level] == 0)
$level="비회원";
?>
<font color=green><?=$level?></font> </td>
<td width="20%" height="35" align="right"><font color="#FF0000"><?=$point?> 점</font></td>
</tr>
<tr>
<td colspan="6" height="1" background="img/dot_line.gif"></td>
</tr>
<? } ?>
<tr>
<td colspan="6" height="30"></td>
</tr>
<tr>
<td height="20" colspan="6">
<table width="651" height="20" border="0" cellpadding="0" cellspacing="0">
<form id="form1" name="form1" method="get" action=""><tr>
<td width="423" valign="middle">
<?
if($_GET[keyword]=="")
{
$page = get_paging($config[cf_write_pages], $page, $total_page, "?$qstr&page=");
echo "<p><table width=100% cellpadding=0 cellspacing=0><tr><td align=center>$page</td></tr></table>";
}
?></td>
<td width="187" align="right" valign="middle">
<div align="center">
<select name="type" id="type">
<option value="0" <?php if($_GET[type]==0){ echo "selected";}?>>닉네임</option>
<option value="1" <?php if($_GET[type]==1){ echo "selected";}?>>이름</option>
<option value="2" <?php if($_GET[type]==2){ echo "selected";}?>>아이디</option>
</select>
<input name="keyword" type="text" class="bkbk" id="keyword" size="15" value="<?=$_GET[keyword]?>"/>
</div> </td>
<td width="41" align="right"><input type="image" name="imageField" src="img/btn_post_search.gif" /></td>
</tr></form>
</table></td>
</tr>
<tr>
<td height="15" colspan="6"> </td>
</tr>
</table>