사이트에서 월별, 주별 이벤트 참여자의 순위를 랭크하는 작업이 있어서 기존에 유통되는 자바스크립트 함수를

asp버전으로 급히 변환(converting)한 것입니다. 함수는 총3개로 구성되어 있으며 하단의 weekCount 함수

에 년,월의 인자만 넘겨주면 이번달에 속한주가 몇주까지 있나를 리턴(return) 해 줍니다. 


처음에 올린 datepart 함수를 이용하면 해당월에 속한 주수를 구할수 있을것 같으나 쉽지는 않습니다. 처음 예제 그대로

따라하시면 해당월에 속한주가 6주까지도 있다는 괴상한 값을 받을 것입니다.


-> wcountMonth = datepart("ww", today) - datepart("ww", firstdate) + 1  이부분에 dateserial 함수를 이용했을경우 5~6주가 넘어옴


 

------------------------------------------------함수는 여기부터 ---------------------------------------------------------


<%
 function isLeapYear (Year)
 
 dim bisReturn


 if (( Year mod 4 = 0 ) and (( Year mod 100 ) <> 0 ) or (( Year mod 400 ) = 0 )) then
   bisReturn = true
 else
   bisReturn = false
 end if

   isLeapYear = bisReturn
  
 end function


 function getDayInMonth(month,year)
 
 dim days
 
 if( month = 1 or month = 3 or month = 5 or month = 7 or month = 8 or month = 10 or month = 12 ) then
   days = 31
 else
  if ( month = 4 or month = 6 or month = 9 or month = 11 ) then
   days = 30
  else
   if  IsLeapYear(Year)  then
    days = 29
   else
    days = 28
   end if
  end if
 end if


 getDayInMonth = days

end function

function weekCount(thisYear, thisMonth)

  dim i, j
  i = 0
  j = 0

  for i = 1 to getDayInMonth(cint(thisMonth), cint(thisYear))
  
   
 
 tempDay = thisYear & "-" & thisMonth & "-"  & cstr(i)

    '월요일이 나올때 마다 j값을 증가시킨다  참고: 1은 일요일, 2는 월요일, 3은 화요일, 4는 수요일,
 '5는 목요일, 6은 금요일, 7은 일요일
    if  weekday(tempDay) = 2  then
      j = j+1
 end if

  next

  if(( thisMonth = 1 ) or ( thisMonth = 10 )) then
    j = 5
  end if


  weekCount = j

end function
%>
<% '//---- 해당년과 해당월을 weekCount 함수에 넘기면 해당월에 몇주가 있나를 리턴해줍니다.  ----//
<% response.Write weekCount( "2006", "9" ) %>


-----------------------------------------------   함수 끝  -------------------------------------------------------------


기회가 되면 컨버팅전의 자바스크립트 함수도 올리도록 하겠습니다.

2008/02/21 15:24 2008/02/21 15:24

이번달의 시작일과 마지막일을 구하는 간단한 예제입니다.

DateSerial 함수의 ToYear 와 ToMonth 의 인자는 "2006" "11" 과 같은 형식으로 넘겨주시면 됩니다.

ex) DateSerail( "2006", "11", 1 )



<%
 
ToYear = Year(Date)
ToMonth = Month(Date)

FirstDay = DateSerial(ToYear, ToMonth, 1 )
LastDay = DateSerial(ToYear, ToMonth + 1 , 0 )
Response.Write " 이번달의 시작일은 " & FirstDay & " 이고 마지막일은 " & LastDay & " 입니다 "


%>

2008/02/21 15:24 2008/02/21 15:24

페이지 처리시 캐쉬에 파일을 남기지 말아야 할경우 asp페이지 맨상단에
아래의 세줄을(주석빼고) 추가하세요


※캐쉬를 사용하지 않음으로 서버에 상당한 무리를 줄수도 있습니다.
꼭 필요할때만 사용하세요.


<% '브라우저와 서버가 캐쉬를 사용하지 말것을 지정 %>
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% '캐쉬돈 페이지가 만료될때까지의 기간, -1은 즉시만료 입니다. %>
<% Response.Expires = -1 %>

2008/02/21 15:23 2008/02/21 15:23

혹시 모르실 분을 위한 팁!!!

걍 퍼가시면 연결 안되고, dbconnect= 이하 부분을 자신의 database설정과 맡게 변경해주셔야 됩니다.

변경 부분은 주석으로 달아 놓았으니 참고하세요


<%
 

 dim Tblname
 Tblname = request("Tblname")
 uid  = request("uid")
 name = request("name")
 addr = request("addr")


 'ODBC설정없이 db연결하기 시작
 'xxx,xxx,xxx,xxx <---- 이부분에 database서버의 ip를 기록합니다.
 'database <---- 이부분에 생성된 database명을 기록합니다.
 'userid <------ 이부분에 데이타베이스 사용자명을 기록합니다.
 'pwd    <------ 이부분에 데이타베이스 사용자의 password를 기록합니다.
 dim dbConnect, db
    dbConnect = "Provider=SQLOLEDB;Data Source=xxx,xxx,xxx,xxx;Initial Catalog=database;user ID=userid;password=pwd;"
    set db = server.createObject("ADODB.Connection")
    db.open dbConnect
 'db 오픈끝
   
    'db가 오픈되었으면 해당작업을 합니다. 여기서는 간단한 insert 작업^^
    dim Sql
 Sql = "insert into "& Tblname &"(uid, name, addr, idate) "
 Sql = sql & "values('"&uid&"','"&name&"','"&addr&"',getdate())"
 db.execute Sql

    'db를 닫고 초기화합니다.
 db.close()
 set db = nothing

%>

 
2008/02/21 15:22 2008/02/21 15:22