본문 바로가기
정보기술/일반

제로보드 - 최근 코멘트를 종합으로 추출하는 기능

by fermi 2007. 7. 18.
http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&no=7182


최근 코멘트를 종합으로 추출하는 기능 추가  
LuKe Hi!   (Homepage)  2005-06-25 10:14:21, 조회 : 4,464, 추천 : 6

먼저, 이 소스는 배상봉님의 것을 가져왔음을 밝히는 바이며, 부분적으로 수정한 부분이 있는데,
원본 소스 위치에 코멘트로 올릴까 하다가 이용자들의 편의를 위해 여기에 따로 올리게 됨을
양해 바랍니다.

여기부터 복사해서 확장자가 php임 파일을 만들어 저장합니다.==========================

<?
   $_zb_url = "제로보드 주소(http://자신의 계정주소/제로보드 폴더/)";
   $_zb_path = "절대주소 (/home/아이디/public_html/bbs/)";  // 계정에 따라 조금씩 다름.
   include $_zb_path."outlogin.php";

//////////////////////////////////////////////////
// Program Start
///////////////////////////////////////////////////

// Function Recent Comment        Y년m월d일 h시i분am(orpm) 형식을 '/'로 바꿈
function recent_cmt($num=10, $textlen=20, $datetype="Y/m/d h:ia") {
// 위의 시간 끝부분 'a'를 뺴면 12시간 단위가 됨
global $_zb_url, $connect, $t_board, $t_comment, $mb_id, $mb_conf;

// get and set variable
$id = $mb_id; // get IDs
$cutTimeMode = $mb_conf[timemode]; // get time mode
$tc = 0; //Total Counts

// timeMode (1: in 24 hours; 2: today;)
if($cutTimeMode == 1){
  $cut_time = time() - 3600 * 24;   // 24hours
}else if($cutTimeMode == 2){
  $cut_time = mktime(0,0,0,date("m"),date("d"),date("Y")); // today
}else{  $cut_time = 0; // normal
}  

// get values from database
for( $i = 0; $i < sizeof($id); $i++){

// get memo data
    $query = "select * from ".$t_comment."_".$id[$i]." where reg_date >
$cut_time order by no desc limit $num";
    $result = mysql_query($query, $connect) or die(mysql_error());

    while($data=mysql_fetch_array($result)){
      // memo data
      $cmt[$tc][no]      = $data[no];
      $cmt[$tc][name]    = stripslashes($data[name]);
      $cmt[$tc][parent]  = $data[parent];
      $cmt[$tc][date]    = date($datetype, $data[reg_date]);
      $cmt[$tc][reg_date] = $data[reg_date];
      $cmt[$tc][memo]    = cut_str(stripslashes($data[memo]), $textlen);

      // get parent data
      $p_data = mysql_fetch_array(mysql_query("select * from $t_board"."_$id[$i]
where no='$data[parent]'"));
      $cmt[$tc][p_subject] = stripslashes($p_data[subject]);
      $cmt[$tc][p_name]    = stripslashes($p_data[name]);
      $cmt[$tc][p_date]    = date($datetype, $p_data[reg_date]);
      $cmt[$tc][p_target]  = $_zb_url."view.php?id=".$id[$i]."&no=".$p_data[no];

      // ready for sorting
      $tm[$tc] = $data[reg_date]."_$tc";
      $map[$data[reg_date]."_$tc"] = $tc;

      $tc++;
    }
}
// sort by time
if($tc)    
  sort($tm);

// output
$tmp1 = time() - 3600 * 12;
$tmp2 = time() - 3600 * 24;

for($i = sizeof($tm)-1; $i >= sizeof($tm)-$num && $i >= 0; $i--){
$n = $map[$tm[$i]];

if($cmt[$n][reg_date] > $tmp1){
$tmpcolor = "red";
}else if($cmt[$n][reg_date] > $tmp2){
$tmpcolor = "blue";
}else{
$tmpcolor = "black";
}

//아래의 body문에 있는 table다음에 보여질 최근 코멘트 내용 불러오는 부분=================
print "<table border=0 cellpadding=0 cellspacing=0 width=255>";
print "<tr><td width=20><font title=\"".$cmt[$n][memo]."\" color=$tmpcolor>●</font></td>";
print "<td>";
print "<a href=".$cmt[$n][p_target]." title='글쓴이: ".$cmt[$n][p_name].
"  글쓴날: ".$cmt[$n][p_date]."'>";
print $cmt[$n][memo]."</a>   ";   // [p_subject]를 [memo]로 수정함
print $cmt[$n][name]."  ".$cmt[$n][date]."  </td></tr></table>";
//여기까지 (수정 가능함)==================================================================
}
}
?>

<html>
<head><title>Recent Comments</title></head>    
<body>
<link type="text/css" rel="stylesheet" href="style.css">
<table border=0 cellpadding=0 cellspacing=0 width=255>
    <td><font color="fuchsia">☞ 최근 올라온 코멘트 목록 (전 게시판 대상)</font></td>
</tr>
</table>
Get Recent Comments: (10개 코멘트 보기, simple view글자 길이 100)<br>    
<?
    $mb_id = array("bbs01", "bbs02", "bbs03", "bbs04", "bbs05", "bbs06", "bbs07", "bbs08",
"bbs09", "bbs10", "bbs11", "bbs12", "bbs13", "bbs99", "guest01", "guest02", "guest03",
"gallery01", "gallery02", "gallery03");
    recent_cmt(5,20);
?>    
<br>
<br>        
Get Recent Comments:(10개 24시간이내에 올려진 코멘트만 보기, simple view글자 길이 20)<br>    
<?
    $mb_id = array("bbs01", "bbs02", "bbs03", "bbs04", "bbs05", "bbs06", "bbs07", "bbs08",
"bbs09", "bbs10", "bbs11", "bbs12", "bbs13", "bbs99", "guest01", "guest02", "guest03",
"gallery01", "gallery02", "gallery03");
    $mb_conf[timemode] = 1;          // 1: 24시간이내,    2: 오늘 0시부터 올라온 코멘트
    recent_cmt(10,20);
?>  
</body>
</html>

여기까지 복사해서 하나의 파일(php확장자)로 저장합니다.=======================================

넣기 원하는 위치에 iframe으로 불러들이면 끝..............

수정된 내용은 위 소스 중에 설명해 뒀음.

위 내용 추가설명 : 이 설명은 원 소스부분의 내용입니다만, 그 소스의 수정된 사항이 모두 들어가 있으며, 그 내용은, 12시간내에는 빨간색 점, 24시간 내에는 파란색 점, 그외에는 검은색 점이 코멘트 앞에 표시됩니다.

67.180.207.89




빙고[희창]
  출력목록 은 어디서 수정을하나요... 2005-06-25
11:54:23
  



보급형
  아 나이거 따라하고싶은데, 뭔가 잘못돼서 나옵니다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
<?
$_zb_url = "제로보드 주소(http://자신의 계정주소/제로보드 폴더/)";
$_zb_path = "절대주소 (/home/아이디/public_html/bbs/)"; // 계정에 따라 조금씩 다름.
include $_zb_path."outlogin.php";
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
위에만 수정만 했는데.. 뭔가 잘못됐나봐요 이렇게

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
☞ 최근 올라온 코멘트 목록 (전 게시판 대상)
Get Recent Comments: (10개 코멘트 보기, simple view글자 길이 100)
테이블 'nuts.zetyx_board_comment_bbs01' 는 존재하지 않습니다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

제 계정주소에 php 파일로 만든거 올렸어요(제로보드 폴더에 넣나요?)
그리고 나모에서 아이프레임으로 불러들였는데 위에처럼 나와요. 내가 뭔가
잘못했나봐요..

제 계정주소, 절대주소는 이상없이 넣은것같은데..뭐가 잘못된건가여 2005-06-25
14:30:42
  



빙고[희창]
  bbs01", "bbs02", "bbs03", "bbs04", "bbs05", "bbs06", "bbs07", "bbs08",
"bbs09", "bbs10", "bbs11", "bbs12", "bbs13", "bbs99", "guest01", "guest02", "guest03",
"gallery01", "gallery02", "gallery03

이부분을 코멘트나타내고싶은 게시판 아이디로 전부 바꿔줘야합니다 -_-;; 2005-06-25
17:25:18
  



보급형
  http://dica.danawa.co.kr/dica_gallery/gallery_all_user/2004/10/226814/org_img/1/226814_59368.jpg

ㅇ나모에 표만들고 표안에 아이프레임으로 코멘트 삽입했거든요. 거기서 멘트 클릭하면 위에사진처럼

나오는데.. 뭔가 잘못된것 같은데,, 뭔지 몰겟습니다.. 왜이렇게 뜨는거죠 2005-06-25
18:51:28
  



보급형
  코멘트내용 바로 밑에 날짜를 놓고싶은데 어떻게 하면돼요?

짐 코멘트내용 바로 옆에 날짜가 출력되거든요.. 2005-06-25
19:18:01
  



빙고[희창]
  전 아이프레임말고 저소스를 출력하고싶은곳에 직접 넣었답니다 ^^;; 2005-06-25
19:55:22
  



보급형
  출력하고 싶은곳 직접 넣는 방법을 알려주세요 2005-06-25
20:55:14
  



LuKe Hi!
  보급형님에 대한 답변입니다.

위 소스중에서 아래 부분 있죠?
//아래의 body문에 있는 table다음에 보여질 최근 코멘트 내용 불러오는 부분=================
print "<table border=0 cellpadding=0 cellspacing=0 width=255>";
print "<tr><td width=20><font title=\"".$cmt[$n][memo]."\" color=$tmpcolor>●</font></td>";
print "<td>";
print "<a href=".$cmt[$n][p_target]." title='글쓴이: ".$cmt[$n][p_name].
" 글쓴날: ".$cmt[$n][p_date]."'>";
print $cmt[$n][memo]."</a> "; // [p_subject]를 [memo]로 수정함
print $cmt[$n][name]." ".$cmt[$n][date]." </td></tr></table>";
//여기까지 (수정 가능함)==================================================================


위 내용중에서
print "<a href=".$cmt[$n][p_target]." title='글쓴이: ".$cmt[$n][p_name].
" 글쓴날: ".$cmt[$n][p_date]."'>";
이 부분을 수정해 주세요.
어떻게 수정하냐면,
print "<a href=".$cmt[$n][p_target]." title='글쓴이: ".$cmt[$n][p_name].
" 글쓴날: ".$cmt[$n][p_date]."' target=_top>";

target=_top 를 추가 했습니다. => 전체화면위에 띄우는 태그입니다.
좀더 설명드리자면,
지정이 없을 시에는 _self 와 같으며, 이는 자신이 위치하는 프레임에 띄우는 것이며
_blank 는 새창으로 띄우는 것이며, _parent 는 부모창에, _top은 현재창에서 프레임을 무시한 상태에서 전체 화면에 띄워주는 것입니다. 2005-06-26
20:59:56
  



LuKe Hi!
  그 아래 답변입니다.......
간단하게 설명 드리겠습니다.
아래 부분을 찾아 보세요.================================================
print $cmt[$n][memo]."</a> "; // [p_subject]를 [memo]로 수정함
print $cmt[$n][name]." ".$cmt[$n][date]." </td></tr></table>";

위에서 테이블 설정 방법과 br 태그 사용법 두가지가 있습니다.

먼저 간단한 br 태그사용할 경우.------------------------------------
print $cmt[$n][memo]."</a><br>    "; // [p_subject]를 [memo]로 수정함
print $cmt[$n][name]." ".$cmt[$n][date]." </td></tr></table>";
여기까지-------------------------------------------------------------
위에서수정된 부분은 <br>    입니다.
한줄내린 다음, 공란 세칸다음에 날짜를 나오게 합니다.

두번째로 테이블 설정 방법은 -------------------------------------------
print $cmt[$n][memo]."</a></td><tr><td></rd><td> "; // [p_subject]를 [memo]로 수정함
print $cmt[$n][name]." ".$cmt[$n][date]." </td></tr></table>";
여기까지---------------------------------------------------------------
수정된 부분은,
</td><tr><td></rd><td> 이 추가 되었습니다.
테이블이 두줄이며, 아래줄에 날짜가 나오는 경우입니다.

멋진 홈피 만드세요... 2005-06-26
21:11:28
  



tech24
  이거 다 좋은데 호스팅업체에서 allow_url_fopen=off 된후,헤더풋으로 붙인 홈에서 제로보드로 불러오면
한 후로출력이 안된다는.. 경로고 뭐고..별 날리를 쳐도.....
물론 상위 디렉에 일반 페이지에서는 잘 불러와짐 2005-06-29
20:23:55
  



바보앙마
  정말 좋은 소스 감사합니다.
근데여... 최근 게시물 처럼 게시판 이름이 나오게 할 수는 없나요? 2005-07-01
19:17:42
  



빨간부리새
  어떤 이유인지 추출한 코멘트의 링크가 정상으로 안됩니다.
링크의 주소가 http://.....com/zeroboardview.php?id=bbs&no=90 으로 .../zeroboard 와 view.php?id=....
사이에 / 표시가 없어 주소를 찼을 수 없다고 나옵니다.
http://......./zeroboard/view.php?id=bbs&no=90 이렇게 나와야 하는데 슬레시가 안나옵니다. 어디가 잘 못 되었을까요? 2005-07-21
15:50:33
  



빨간부리새
  ㅎㅎ 드뎌 알았습니다.
아이프레임으로 가저올때 확장자를 php로 하였더니 그러더군요...
html로 하세여~~
이 아무것도 아닌걸 가지고 꼬박 밤샘 아구 머리야~~~
LuKe Hi!님 너무너무 감사 합니다. 2005-07-21
21:09:59
  



준희^^+
  PHP 소스부분만 파일로 저장하고 코멘트 출력할 부분에 인클루드 시켜 쓰시는게 더 좋네요..
좋은 소스 감사~ 2005-08-14
14:32:36
  



김동욱
  이쁘네요...감사합니다.준희님 말씀에 동감..ㅎㅎ 2005-08-23
18:15:03
  



연동일
  방금 적용해 봤는데 아주 좋습니다....위에 (준희)님 말씀에 저도 동감입니다... 2005-08-30
19:36:27
  



이태훈
  첨에 include 부분에서 알수 없는 에러가 나더니,
다른 파일에 있는 거 복사해서 붙이니까 되네요. ^^*

감사합니다~ 2005-09-10
17:28:11
  



이상준
  이거 출력되는 폰트를 바꾸려면 어떻게 해야 하나요? 테이블 전체를 폰트를 지정해줬는데 안되네요. 2005-10-22
03:03:05
  



김일화
  ☞ 최근 올라온 코멘트 목록 (전 게시판 대상)
Get Recent Comments: (10개 코멘트 보기, simple view글자 길이 100)
Table 'buffalo9.zetyx_board_comment_garelly' doesn't exist

이런 오류는 멀까용..ㅜ.ㅜ 헤매고있는데 너무힘들어요.. 답변좀주세용. 2005-10-28
23:15:19
  



gunjoo
  추천 한방 누름니다. 좋네요. 2005-11-06
15:24:16
  



정은정
  님 짱이예요~~씸플하고 적용 간단하고~~(물론 전 바보라 힘들게 했지만--;;)
스킨 자료실에 있는 것들보다 낫네용~~!! 2006-01-28
11:29:50
  



랄라랄라
  IFRAME 으로 넣지 않고 직접 PHP로 작성한 페이지에서 삽입되도록 수정해서 적용시켰습니다.
잘 되고 보기 좋습니다.
좋은 팁 감사합니다.
랄라~ 랄라~ 2006-08-06
14:41:55
  



이수호
  팁을 남기신 멋있는 당신께 추천 한방 꽝!!!
감사합니다