게시판 본문 ASP, ASP.NET, IIS & Script - Read Only
re: 불규칙 페이징;; 불불규칙 페이징;;; ㅜㅜ |
---|
작성자: 송원석
작성일시: 2006-10-23 08:24,
조회수: 4,190
|
제 생각이 무조건 옳다고 말할 수는 없겠지만, 이런저런 방식으로 작업을 하면 되기는 될 것 같습니다. 다만 제가 말씀드리는 방식은 하나의 예에 불과할 뿐 다른 여러가지 좋은 방법들을 찾아보시는 것도 좋을 것 같네요. ^_^
먼저 두 단계의 페이징이 있으므로, 설명상의 편의를 위해서 레벨 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 | 6,361 | ||
1,586 | 2006-10-21 | 3,636 | ||
1,585 | 2006-10-22 | 3,799 | ||
![]() |
2006-10-23 | 4,190 | ||
1,583 |
FileCude와 JoyUpload를 이용한 Drag & Drop Multi file upload 방법 공개 [1] |
2006-10-12 | 11,128 | |
1,582 |
Feel~ |
2006-09-29 | 15,907 | |
1,581 | 2006-09-29 | 4,004 | ||
1,580 |
Feel~ |
2006-09-29 | 1,454 | |
1,579 | 2006-09-29 | 4,199 | ||
1,578 |
Feel~ |
2006-09-29 | 1,598 | |
1,577 |
Feel~ |
2006-09-29 | 19,407 | |
1,576 |
Feel~ |
2006-10-02 | 1,611 | |
1,575 | 2006-09-28 | 18,000 | ||
1,574 |
박종래 |
2006-09-26 | 1,618 | |
1,573 | 2006-09-26 | 3,790 | ||
1,572 |
박종래 |
2006-09-25 | 1,992 | |
1,571 | 2006-09-25 | 4,532 | ||
1,570 | 2006-09-22 | 4,286 | ||
1,569 | 2006-09-22 | 3,881 | ||
1,568 | 2006-09-11 | 13,950 | ||
1,567 | 2006-09-11 | 4,197 | ||
1,566 | 2006-08-25 | 3,844 | ||
1,565 | 2006-08-27 | 4,710 | ||
1,564 | 2006-08-18 | 4,601 | ||
1,563 | 2006-08-21 | 4,606 |