게시판 본문 ASP, ASP.NET, IIS & Script - Read Only

re: 불규칙 페이징;; 불불규칙 페이징;;; ㅜㅜ
작성자: 송원석
작성일시: 2006-10-23 08:24,  조회수: 3,831
제 생각이 무조건 옳다고 말할 수는 없겠지만, 이런저런 방식으로 작업을 하면 되기는 될 것 같습니다. 다만 제가 말씀드리는 방식은 하나의 예에 불과할 뿐 다른 여러가지 좋은 방법들을 찾아보시는 것도 좋을 것 같네요. ^_^

먼저 두 단계의 페이징이 있으므로, 설명상의 편의를 위해서 레벨 1 페이징과 레벨 2 페이징으로 가칭하기로 하겠습니다. 임의로 구성된 1 단계 페이징 정보를 배열 같은 곳에 담아둡니다. 아마 다음과 같이 되겠죠?
Array1 = { 6, 13, 4, 9, 21, 84 }
이 데이터들은 아마도 변동이 가능하리라고 예상되므로 이 배열을 동적으로 채워주셔야 겠죠. 그리고 편의를 위해서 1 단계 페이징의 각각의 첫 페이지의 인덱스를 잡아주기 위해서 다음과 같이 각각의 값들이 누적된 두 번째 배열을 만듭니다. 이 배열은 첫 번째 배열의 값들을 누적하여 생성하시면 될 것입니다.
Array2 = { 1, 7, 20, 24, 33, 54 }
그리고 마지막으로 각각의 1 단계 페이징의 각각의 페이지들의 마지막 인덱스를 담은 배열을 만듭니다.
Array3 = { 6, 19, 23, 32, 53, 127 }
여기까지는 쉽게 이해가 되시리라고 생각합니다. 즉, 예를 들어서 1 단계 페이징에서 두 번째 페이지는 게시물 갯수가 13 이고, 첫 번째 게시물의 인덱스가 7 이며, 마지막 게시물의 인덱스는 19 인 것이죠. 여기에서 중요한 점은 1 단계 페이징의 구분 수자들이 차후에 변경될 수도 있으므로, 먼저 첫 번째 배열을 데이터베이스나 기타 저장소로부터 가져오고, 그 다음에 두 번째 배열과 세 번째 배열을 동적으로 생성하는 것입니다. 여기에 사용되는 공식은 아마도 쉽게 이끌어 내실 수 있으리라고 생각합니다. ^_^

이제 2 단계 페이징을 생각해 보도록 하겠습니다. 위의 배열 생성 작업이 끝났으므로 상당히 쉽게 데이터들을 가져올 수 있을 것 같습니다. 예를 들어서 어떤 페이지가 있고 거기에 1 단계와 2 단계 페이지에 대한 정보가 쿼리스트링 등으로 전달이 된다고 생각해보죠. 그러면 아마도 이런 식이 될 것입니다.
somepage.asp?first=5&second=2
즉 1 단계 페이징의 5 페이지와 2 단계 페이징의 2 페이지라는 말이 되겠죠. 그렇다면 이 페이지에 출력되어야 할 게시물들의 첫 번째 게시물의 인덱스는 다음과 같은 공식으로 구해집니다.
[해당 1 단계 페이징의 시작 게시물 인덱스] + ((second - 1) * 6)
여기에서 [해당 1 단계 페이징의 시작 게시물 인덱스] 은 위의 두 번째 배열에서 1 단계 페이징의 페이지의 수를 배열의 인덱스로 지정하면 바로 나오겠죠. 그리고 second 의 값은 지정된 2 단계 페이징의 페이지 값이므로 위의 예에서는 54 + ((2 - 1) * 6) = 60 이 될 것입니다.

이 값을 사용하여 데이터베이스로부터 게시물을 인덱스 60 부터 무조건 6 개를 가져옵니다. MS SQL 서버를 사용하신다면 아마 TOP 문을 사용하면 되겠죠. 그리고 루프를 돌려서 출력을 하되 1 단계 페이징의 단위를 넘어가면 안되므로 루프 내부에서 위의 세 번째 배열의 값과 현재 게시물의 값을 비교하여 분기를 시켜줍니다. ^_^

직접 테스트를 해보고서 말씀드리는 것이 아니라 약간씩 문제가 있을수도 있겠지만, 아마 대부분의 경우 문제가 없을 것 같고 속도도 그럭저럭 만족스러울 것 같네요.

감사합니다.
IP 주소: 203.231.54.116
전체 3 건의 댓글이 존재합니다.

장윤태

ㅜㅜ 생각을 많이 해봐야 겠내요~~ 쿼리로 어떻게 풀어야 할지~~ ^^
2006-10-23 10:25

장윤태

그런데 만약 2단계 페이징에서 1페이지가 넘어가는건 어떻게 될까요?
2006-10-23 10:26

송원석

그러니까, 문제를 쉽게 보시려면 페이징의 레벨과는 무관하게 특정 페이지 첫 번째 게시물의 인덱스를 구하시기만 하면 된다고 봅니다. 일종의 요령이죠. 페이지가 넘어간다고 생각하지 마시고 X 의 Y 페이지의 첫 번째 게시물 인덱스를 찾아서 거기서부터 6 건 출력하면 되는 겁니다. 감사합니다. ^_^
2006-10-23 10:53
전체 2,095 건의 게시물, 84 페이지로 구성된 ASP, ASP.NET, IIS & Script 게시판의 23 페이지입니다.
게시물
1,587

불규칙 페이징;; 불불규칙 페이징;;; ㅜㅜ

장윤태

2006-10-21 5,752
1,586

re: 불규칙 페이징;; 불불규칙 페이징;;; ㅜㅜ

송원석

2006-10-21 3,344
1,585

re: 불규칙 페이징;; 불불규칙 페이징;;; ㅜㅜ

장윤태

2006-10-22 3,511

re: 불규칙 페이징;; 불불규칙 페이징;;; ㅜㅜ [3]

송원석

2006-10-23 3,831
1,583

FileCude와 JoyUpload를 이용한 Drag & Drop Multi file upload 방법 공개 [1]

Feel~

2006-10-12 10,785
1,582

FileCube 잘 사용하고 있습니다. 근데 도움 좀 주세요~

Feel~

2006-09-29 15,907
1,581

re: FileCube 잘 사용하고 있습니다. 근데 도움 좀 주세요~

송원석

2006-09-29 3,682
1,580

re: FileCube 잘 사용하고 있습니다. 근데 도움 좀 주세요~

Feel~

2006-09-29 1,454
1,579

re: FileCube 잘 사용하고 있습니다. 근데 도움 좀 주세요~

송원석

2006-09-29 3,811
1,578

re: FileCube 잘 사용하고 있습니다. 근데 도움 좀 주세요~

Feel~

2006-09-29 1,598
1,577

re: FileCube 잘 사용하고 있습니다. 근데 도움 좀 주세요~ [1]

Feel~

2006-09-29 19,407
1,576

re: FileCube 잘 사용하고 있습니다. 근데 도움 좀 주세요~ [1]

Feel~

2006-10-02 1,611
1,575

EgoCube.FTPUtil 예약작업... [1]

공훈식

2006-09-28 16,102
1,574

아래 질문 드린 사람입니다..ㅋㅋ;;

박종래

2006-09-26 1,618
1,573

re: 아래 질문 드린 사람입니다..ㅋㅋ;;

송원석

2006-09-26 3,498
1,572

이거처럼 PHP에서 구현되는 것 ASP에서도 가능한지요?

박종래

2006-09-25 1,992
1,571

re: 물론 ASP 로도 가능합니다. [3]

송원석

2006-09-25 4,212
1,570

EgoCube.FTPUtil

공훈식

2006-09-22 3,949
1,569

re: EgoCube.FTPUtil

송원석

2006-09-22 3,568
1,568

enctype="multipart/form-data" 에 대한 것입니다.

장윤태

2006-09-11 13,592
1,567

re: enctype="multipart/form-data" 에 대한 것입니다. [2]

송원석

2006-09-11 3,865
1,566

게시물 1313과 유사 질문입니다.

조경호

2006-08-25 3,544
1,565

re: 게시물 1313과 유사 질문입니다.

송원석

2006-08-27 4,370
1,564

카테고리 구성 질문 ^^

장윤태

2006-08-18 4,271
1,563

re: 카테고리 구성 질문 ^^ [1]

송원석

2006-08-21 4,280