[제로보드] 여러게시판의 게시물을 뽑는 쉬운 방법과 설명 0

네로 | 2002.01.18 12:14:54 답변: 0 조회: 3364
분류기타 https://life.moyiza.kr/qna/2198952
원래는 제가 설명을 넣어서 해야할껀데 지금 새 사이트 오픈과 컨텐츠 부족으로 해얄일이 많아서 일단은 엔지오닷컴의 다솜지기님의 글을 옮겨 적습니다...첨부는 소스구요.... 좀이라도 돔이 되셨으면 하는 바램입니다...(설명이 잘 돼 있더라구요^^)
===========================================================

먼저 적색 부분은 소스이며 청색 부분과 녹색 부분을 잘 비교해 보세요.
소스 내에는 청색을 설명에는 녹색을 사용하였습니다.나머지는 설명입니다.
첨부된 파일은 이 파일의 실제 소스만 뽑아 첨부한 것입니다.

<?
하단 부분은 문자열을 자르는 함수입니다.
영어나 특수문자는 127보다 ASCII값이 적으며, 2바이트의 문자[한글]는 127보다 큽니다.
2바이트 문자의 일부분이 자르는 Byte에 걸리는 경우에는 127보다 ASCII값이 크므로
이것을 기준으로 자르는 부분을 결정하는 것입니다.
만약 한글의 경우 $over값을  한개 올려줍니다.
한글이 잘라야하는 문자열중에 4개 포함되면 $over값은 2배인 8이되는 것입니다.
$over가 홀수인 경우에는 문자열을 원하는 자릿수로 자르게되면 온전한 문자가 아닌경우
"?"로 표시되어 지므로 2로 나눈 나머지 만큼을 빼서 문자열을 자르게되면 문자열을 자를때 "?"가 나타나지 않습니다.
예를들면 20Byte로 문자를 자르려 할때 20번째와 21번째 Byte에 한글이 존재할 경우
무조건 자르게 돠면 "?"가 생기게 되므로 19번째 까지만 잘라서 보여주는 원리입니다.
function cut_string($str,$length){
        if(strlen($str) <= $length){
     return $str;
  }
      for($i=0;$i<$length;$i++){
          if(ord($str[$i])>127){
        $over++;
        }
       }
     return chop(substr($str, 0, $length - $over%2));
}



아래는 함수를 미리 정의해 두고 필요할때 불러서 쓰기위해 function이라는 함수를 사용하였습니다.
function 함수에 대해서는 나중에 좀더 자세히 알아보도록 하고 형식은 대충 이러합니다.
function 함수명(인자1, 인자2, ...){
        함수의 실행문
        return 리턴값;//리턴값이 있을경우만 들어간다.
        }
위에서는 문자를 계속 체크해야 하기때문에 리턴값이 필요했지만 아래 최근글 뽑는 경우는 리턴값 즉, 반환값이 필요없습니다.
함수명 뒤에 (인자1, 인자2, ...)와 같이 인자가 붙는경우에는 인자값을 받아와야만 실행합니다.
function dasom($id, $num){
함수명dasom과 $id와 $num이라는 인자을 부여하였습니다.
  mysql_connect("localhost","DB아이디","DB비밀번호");
  mysql_select_db("DB이름");

My-SQL DB에 접근합니다.
$zero_path="http://제로보드가 설치된 디렉토리 경로";
제로보드가 설치된 디렉토리의 경로를 넣으시면 되며 끝에 /가 없이 넣습니다.
상대경로나 URL경로로 넣으시기 바랍니다. 경로에 대한 이해는 Study쪽을 이용해주세요.
$result=mysql_query("select * from zetyx_board_$id order by no desc limit $num");
zetyx_board_$id 테이블에 접근해서 최근 자료부터 $num의 수만큼 불러옵니다.
여기서 $id$num은 처음 function함수에서 인자로 정의한 것입니다.
while($data=mysql_fetch_array($result)){
php에서 while문으로 정의된 함수는 반복되어 실행되어지므로  표로 작성할 경우 깨지지 않도록 유의하여 작성해야 합니다.
  $data[subject] = stripslashes($data[subject]);
제목을 가져와 $data[subject]라는 변수로 정의하였습니다.
  $data[subject] =cut_string($data[subject], 20);
정의된 제목을 먼저 위에서 정의한 문자열 자르는 함수를 이용하여 문자열을 자르는 부분입니다.
cut_string($data[subject], 20);은 제목, 잘라낼 글자의Byte수를 뜻합니다.
제목의 글자수가 20Byte가 넘으면 위에 함수에서 정의한 계산법에 의해서 잘라내라는 뜻입니다.
  $data[name] = stripslashes($data[name]);
글의 작성자를 자져와 $data[name]이라는 변수로 정의하였습니다.
$comment_num=mysql_fetch_array(mysql_query("select count(*) from zetyx_board_comment_$id where parent='$data[no]'"));
zetyx_board_comment_$id 테이블에 접근해서 해당 글의 코멘트를 가져옴.
역시같은 게시판글의 코멘트를 가져와야 하므로 $id 함수에서 인자로 정의된 게시판의 글을 가져옵니다.
  if($comment_num[0])$data[subject].="[".$comment_num[0]."]";
$data[subject] 즉 제목에 해당된 글에 코멘트가 있을때 코멘트 갯수를 가져와 제목뒤 앵커태그를 끝내고 갯수를 출력합니다.
  echo "$id&no=$data[no]>[".$data[name]."] ".nl2br($data[subject])."
";;
화면에 출력되는 부분으로 링크 설정부분입니다.
즉 링크를 클릭했을때 코멘트를 가져온 게시판으로 이동해야 하므로 게시판 아디디에 함수의 인자로 정해진$id를 사용합니다.
}
  mysql_close();
}
?>

My-SQL DB에 접속 끊는다.


위에 설정된 부분은 아직 실행이 되지 않습니다.
즉 function함수로 정의하여 인자값이 정의되지 않았으므로 출력하지 않는 것입니다.
function함수로 정의하여 사용한 것은 다음과 같이 사용합니다.
함수명(인자값1, 인자값2, ...); 과 같이 인자값을 부여해 주면 인자값이 부여된 부분에 위 함수의 실행값이 출력됩니다.
여기서는 <? dasom($id의 인자값,$num의 인자값); ?>과 같이 인자값을 부여해 주면 됩니다.
즉.위 함수의 실행문에서 함수명은 doasom이고
$id의 인자값은 가져올 글이 있는 게시판 아이디에 사용하였고,,
$num의 인자값은 가져올 글의 갯수에 사용되었습니다.
아래는 실제로 나타나는 부분이므로
표로 작성할 경우 위 함수 실행문에서 정의한 표와 여기서 만든 표가 합쳐지게 됩니다.
그러므로 표가 깨어지지 않도록 유의하여야 합니다.
현제는 표로 작성한 것이 아닌 줄바꿈 태그인
태그를 사용했으므로 표가 깨어지지 않죠.

이제  dasom(게시판아이디,가져올 글수); 부분에 인자값만 서로다르게 하면 위 함수를 반복적으로 사용할수 있습니다.
간단하게 표를 작성해 출력해 보도록 하겠습니다.
테이블은 청색이며 여러분께서 실제 사용해야 할 부분인 글이 출력되는 곳은 적색으로 표시합니다.


<? dasom(게시판아이디1,가져올 글수); ); ?>

<? dasom(게시판아이디2,가져올 글수); ); ?>




미리보기 : http://www.dasomlove.net/java_ex/notice.php
첨부파일 다운로드 ( 1 )
notice.zip | 905B / 14 Download
IP: ♡.157.♡.150
답변
이 질문에 답변하시면 포인트 5점을, 채택될 시엔 포인트 0점을 더 드립니다.
제목 상태 답변수 글쓴이 날짜
0
네로
02/01/26
0
네로
02/01/26
0
네로
02/01/26
0
서주원
02/01/26
0
777
02/01/24
1
네로
02/01/21
1
네로
02/01/21
0
Hajin
02/01/21
0
김진오
02/01/20
0
네로
02/01/19
0
네로
02/01/19
0
네로
02/01/19
0
Mr.Doolee
02/01/19
3
별이
02/01/19
0
Hajin
02/01/19
0
네로
02/01/18
0
무우
02/01/18
0
네로
02/01/18
0
원충연
02/01/18
0
네로
02/01/18
모이자 모바일