ITmembers.net 아카이브 · 2002–2009

질문과 답변

[re] 페이지링크때문에 글올렸었는데여...

>안녕하세여?
>저번에 페이지링크때문에 글을 올린 사람입니다.
>언제쯤.. 시간이 나실지 궁금해서요. ^^
>시간되시면 소스좀 봐주세요.


안녕하세요. 답변이 많이 늦었습니다.
타인이 만든 소스를 보는 건 정말 괴롭습니다. 한눈에 읽혀지지 않고, 특히 이곳 강좌에서 다루지 않은 로직이 중간중간에 섞여있을 때는 더더군다나 힘듭니다. 프로그래머가 어떤 의도로 그렇게 만들었는지를 곰곰히 생각해봐야하니까요.

송은주님의 게시판은 다음과 같은 문제가 발생합니다.

* 전체 글 수 : 123개
* 한 페이지에 보여주는 글 목록 수 : 12개
* 한 페이지에 보여주는 페이지 링크 수 : 10개

  1. 두번째 블록에서 보여줄 페이지 링크는 [11] 만 보여야 하는데,
    [11]~[20]까지 보인다.
    이게 주된 질문 요지였죠?

  2. 그런데 하나더,
    한 페이지에 보여주는 글 목록의 수가 11개밖에 되지 않는다.
    나머지 하나는 어디 간 걸까요?


잘못된 거 짚어보면요...

  1. config.txt 파일에서 $start를 정의하였습니다.
    그런데 list.txt 파일을 보니 41행에 또 $start를 정의했더군요. 수식도 다르구요. $Title_Num 이 두번째에선 $ShortCut_Num으로 바뀌었더군요.
    두번째 정의한 것이 잘못된 것 같습니다.

  2. list.txt의 53행은 잘못되었습니다.
    mysql_fetch_array() 함수를 53행에서 한번 사용하고,
    다시 54행에서 사용하고 있습니다.
    이것때문에 한 페이지에서 12개의 목록이 보이지 않고, 11개만 보이게 된 겁니다. 미리 한번을 실행해버렸으니...
    53행의 if문은 while 문 안에서 다른 방식으로 해결하는 게 좋습니다. 절대 mysql_fetch_array()문을 두번 사용하시지는 말구요.

  3. 마지막으로 가장 중요한 거! 이것이 주된 질문이었으니까요.

    222행을 보면 블록의 끝 페이지 번호를 정의하는 문장이 있습니다.
    222행처럼하는 것이 맞는데요,
    단, 현재의 블록이 마지막 블록일 경우에는 $last의 값이 $total_page의 값이 되어야 합니다. 블록마다 무조건 10개씩 보여주면 안되쟎아요.
    그래서 222행 아래에 다음과 같은 코드가 추가되어야 합니다.

    if ($block >= $total_block) {
            $last = $total_page;
    }


이해가 되셨나요?
소스 보다가 눈 빠지는 줄 알았습니다. ^^

댓글 1