특정 게시판의 코멘트수나 획득한포인트로 순위를 뽑을수있을까요?
특정게시판에 작성한 코멘트숫자로 or 획득한 포인트로 순위를 뽑을수있을까요?
쿼리는 너무 어렵네요 ㅜㅜ
쿼리는 너무 어렵네요 ㅜㅜ
|
댓글을 작성하시려면 로그인이 필요합니다.
댓글 12개
예를들어 한명이 순위를 확인하기 위해 쿼리가 돌아가면
모든 게시판의 댓글인 글 갯수를 로드하고 그것도 개인별로 임시로 뽑아 그걸 랭킹으로 뽑기 때문입니다.
임의의 테이블 하나를 생성하셔서 해당 게시판의 댓글수를 아이디별로 미리 저장을 해놓고 그 테이블에서 순위를 가져오는게 좋을것 같습니다.
table_rank
comment mb_id
100 abc
5 def
이런식으로 댓글을 하나 쓸때마다 해당 아이디에 1씩 더해주고 순위는 저 테이블에서 가져오는게 맞는것 같습니다.
bbs폴더에 댓글달때 파일을 찾아서 댓글이 달릴때 쿼리문으로 table_rand 에서 자신의 아이디에 comment 1씩 더해주면 됩니다.
특정 게시판에서 하시려면 if문을 이용하셔서 게시판 번호를 체크하시고 넣어주시면됩니다
랭킹계산하는 쿼리문 - http://blog.naver.com/PostView.nhn?blogId=prosports0&logNo=80143909734
그누보드 root - bbs - write_comment_update.php 파일에
$sql = " insert into $write_table
set ca_name = '{$wr['ca_name']}',
wr_option = '$wr_secret',
wr_num = '{$wr['wr_num']}',
wr_reply = '',
wr_parent = '$wr_id',
wr_is_comment = 1,
wr_comment = '$tmp_comment',
wr_comment_reply = '$tmp_comment_reply',
wr_subject = '',
wr_content = '$wr_content',
mb_id = '$mb_id',
wr_password = '$wr_password',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_datetime = '".G5_TIME_YMDHIS."',
wr_last = '',
wr_ip = '{$_SERVER['REMOTE_ADDR']}',
wr_facebook_user = '$wr_facebook_user',
wr_twitter_user = '$wr_twitter_user',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10 = '$wr_10' ";
sql_query($sql);
부분 아래쪽에 $sql2 = 문을 하나 더 돌립니다.
table_rank 에서 http://blog.naver.com/PostView.nhn?blogId=prosports0&logNo=80143909734 이 링크에 있는 쿼리문으로 랭킹을 뽑아오시면 됩니다.
write_comment_update.php 말씀하신곳 바로밑에다가
$sql2 = " insert into $write_table
set ca_name = '$wr[ca_name]',
wr_option = '$wr_secret',
wr_num = '$wr[wr_num]',
wr_reply = '',
wr_parent = '$wr_id',
wr_is_comment = '1',
wr_comment = '$tmp_comment',
wr_comment_reply = '$tmp_comment_reply',
wr_subject = '$wr_subject',
wr_content = '$wr_content',
mb_id = '$mb_id',
wr_password = '$wr_password',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_datetime = '$g4[time_ymdhis]',
wr_last = '',
wr_ip = '$_SERVER[REMOTE_ADDR]',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10 = '$wr_10' ";
sql_query($sql);
이것을 똑같이 하나더넣고 위처럼 sql2로만 바꾸라는 말씀이시지요?
"$sql2 는 table_rank 의 comment에서 mb_id 체크하고 같은곳에 +1씩 해주면 됩니다."
이게 무슨말씀이신지 모르겠습니다 ㅜㅜ
여기서 $point 는 select 문을 이용해서 table_rank 의 포인트를 가져와서 +1 을 해준 값을 넣어주면 됩니다.
mb_id 는 int 가 아니라 varchar(50) 으로 (mssql을 요새 하다보니 자료형을 잘 모르겠네요. member 테이블에 있는 mb_id랑 같게 해주시면 됩니다) 바꿔주셔야 됩니다.
쿼리지식이 하나도 없어서 수십번해보고있는데 잘안되네요.
$point 는 select 문을 이용해서 table_rank 의 포인트를 가져와서 +1 을 해준 값을 넣어주면 됩니다. "라고하셨는데
어떻게 하는지를 모르겠습니다 ㅜㅜ 이런 친절한 답변을 받고도 못하구있네요 ㅜㅜ
$point 는 select 문을 이용해 작성자의 아이디 ($mb_id) 를 이용해서 table_rank 의 point 값을 얻어와서 거기서 +1을 해줍니다.
즉
1. 작성자 아이디의 포인트를 가져와 1을 더한다. ($point를 선언하여 select 문으로 table_rank의 point 값을 가져와 +1)
2. 그 더한 값을 다시 table_rank 에 없데이트 한다. ($sql2 문을 이용)
이렇게 돌아간다고 생각하시면 됩니다~
write_comment_update.php 밑에다가
$sql2 = " update table_rank set comment = $point where mb_id = $mb_id ";
sql_query($sql);
이렇게 붙여넣었습니다.
여기까지했는데 1.2번이 무슨말인지모르겠습니다..선언하는법도 몰르구요 ㅜㅜ
$data = mysql_query( $point_que, $connect );
로 하면 data 에 해당 아이디의 point 가 들어갑니다.
$point = $data+1;
을 해서 point 에 해당 아이디의 point 에 1을 더한 후
sql2 를 실행하시면 됩니다.