답변형 게시판 만들기 (4/4) 답변 처리(reply_ok.php)

드디어 답변형 게시판 마지막 강좌입니다.

* 소스 파일은 자료실에 등록되어 있습니다.

reply_ok.php에서는 72행부터 105행까지가 핵심입니다.

※ 이 부분을 완전히 이해하려면 답변형 게시판의 원리(TYPE2) 강좌와 함께 보시기 바랍니다.
아래 표기된 원문자는 게시판의 원리 강좌(TYPE2)에서 해당되는 단계를 나타냅니다.
참고로 원리 강좌에서 답변 글이 등록되는 과정을 다음과 같이 설명드렸습니다.

① number는 자동 증가합니다.
② 원 글의 replyst의 값을 구합니다.
③ 원 글의 깊이를 구합니다. 여기서 깊이라는 것은 처음 나오는 ‘A’의 위치입니다. 위치는 0부터 시작합니다. 따라서 ‘AAAAA’의 깊이는 0, ‘BBAAA’의 깊이는 2가 됩니다.(처음 나오는 A의 위치가 세 번째이지만 0부터 시작하므로 2가 됩니다.)
④ replyno(진짜 원 글의 번호)를 구합니다.
⑤ replyno가 같고 ‘깊이+1’번째 문자를 제외한 나머지 문자가 일치하는 글 중에서 가장 큰 reply값을 가진 글의 number를 구합니다.
⑥ ⑤에서 구한 number의 replyst 값에서, 깊이+1번째 문자를 구합니다.
⑦ ⑥에서 구한 위치의 다음 문자를 구합니다.
⑧ replyst 값에 깊이+1번째 문자를 ⑦에서 구한 문자로 바꿉니다.
⑨ 목록을 보여줄 때는 replyno를 내림차순으로 정렬한 상태에서 reply를 기준으로 오름차순 정렬합니다.

위 단계를 참고하시면서 아래 내용을 보시면 됩니다.

  • 73~75행까지는 원 글을 찾는 것이고(②단계),
  • 77행은 원 글의 깊이를 구하는 것입니다. (③단계)
    글의 깊이는 replyst 필드에 저장된 문자열 중에서 ‘A’가 처음 나오는 위치를 구하는 것입니다.
    strpos 함수는 문자열에서 특정 문자가 처음 나타나는 위치를 돌려주는 함수입니다.

    그런데, 만약 이 값이 정수가 아니라면, 즉 ‘A’라는 문자를 찾지 못했다면 이 글에 대해서는 더 이상 답변을 할 수가 없습니다.
    그런 기능을 하는 것이 79~81행입니다.

  • 83~84행은, 원글의 replyst의 값(문자열) 중에서 깊이($depth)에 해당되는 부분의 문자를 ‘_’로 대치하는 것입니다.
  • 86행은, replyno가 같고 ‘깊이+1’번째 문자를 제외한 나머지 문자가 일치하는 글 중에서 가장 큰 reply값을 가진 글의 number를 구하는 과정입니다.

    83~90행이 ⑤단계에 해당됩니다.

  • 92행은 ⑥단계,
  • 93행은 ⑦단계,
  • 95행은 ⑧단계에 해당됩니다.
  • 그리고 마지막 ⑨단계가 100행부터입니다.

결코 쉽지만은 않은 부분입니다.

휴~ 답변형 게시판 강좌를 끝내고 나니 이렇게 후련할 수가…
이상, 동주아빠 손병목이었습니다.

위로 스크롤