본문 바로가기

ASP.NET

ASP.NET 글 조회수 증가

세션을 이용하여 게시판 조회수 중복증가 막기.(새로고침 할 때 증가하는 조회수 막기)

1. SQL@idx와 @upVisit 변수 두개를 받는 프로시져 SP_BoardNotice_View를 만든다.
(SP_BoardNotice_View 프로시져에서 글을 볼 때마다 update가 되도록 한다.)

create proc SP_BoardNotice_View
(
 @idx int,
 @upVisit int
)
as
begin
      update BoardNotice set bvisit = bvisit + @upVisit  where idx = @idx
      select 
      bType,
      bTitle,
      bConts,
      bVisit,
      bDate,
      bFile
      from BoardNotice where idx=@idx
end



2. 프로그램에서 세션을 이용하여 SP_BoardNotice_View 프로시져에 넘겨 줄 _upVisit를 만든다.
View페이지로 이동 전 페이지의 url이동 후 페이지의 url과 비교하여
두 개의 url이 같다면 새로고침이기 때문에 조회수를 증가하지 않도록 _upVisit에 '0'을 넣어주고
두 개의 url이 서로 다르다면 다른 페이지에서 View로 이동했기 때문에 조회수가 증가하도록 _upVisit를 '1'으로 설정한다.

이동 전 페이지는 MasterPage가 아닌 비교를 원하는 다른 어떤 페이지여도 상관없다.

MasterPage 이동 전 페이지
if (!IsPostBack)
{
Sesstion["returnUrl"] = Request.RawUrl;
}
Request.RawUrl ▶ 요청한 현재페이지의 Url


noticeViewPage 이동 후 페이지 (세션에 저장된 값을 받아서 비교하는 페이지)
if (!IsPostBack)
{
string prePageUrl = this.Session["returnURL"].ToString();
int _upVisit = 0;
if (Request.RqwUrl != prePageUrl )
{
_upVisit = 1;
}
}
prePageUrl ▶ 이동 전 페이지의 Url을 받는 변수


3. View 페이지에서  프로시져를 가져오는 함수를 호출하여 _upVisit를 넘겨준다.
[DB에 연결하여 View 프로시져를 가져와 설정하는 함수(BoardNotice_View)는 생략]
DataRow row =  BoardNotice_View( 글번호, _upVisit);
 

'ASP.NET' 카테고리의 다른 글

게시판 리스트 출력_ Repeater  (0) 2011.04.26
StringBuilder  (0) 2011.04.14
LastIndexOf  (0) 2011.04.13
Exists_ 파일명 출력하기  (0) 2011.04.13
asp.net- 숫자 자릿수 콤마찍기  (0) 2011.04.07