제로보드 관련된 유용한 정보를 공유하는 곳입니다.
  • 웹미니 한줄 전광판 영역 입니다.
글 수 98
출처 :  
http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=코멘트&select_arrange=headnum&desc=asc&no=6006자신이 올린 글에 달린 댓글(코멘트)만 모아보자......

        강좌나 커뮤니티 또는 NZEO의 '유용한 팁 공유 게시판'과 같은 성격의 게시판을 운영하는 경우
        자기가 올린 글에 달린 댓글에 답변을 빈번하게 달아야 하는 경우가 발생하거나,
        오래전에 올렸던 글에 대한 댓글이 올라 왔을때 너무 오래전에 올려서 미처 확인이 않되는 경우가 발생하게 되는데,
        이때 자신이 올린 글에 최근에 달린 댓글만 모아놓은 페이지가 있거나,
        댓글이 달리면 알려주는 기능이 필요하다고 생각했습니다.


1. 먼저, schema.sql 을 수정해야합니다.

        277번 라인 이하에 있는 다음 내용 중에,
        
/////////////////////////////////////////////////////////////////////////////////
// 간단한 답글 테이블
/////////////////////////////////////////////////////////////////////////////////

$board_comment_schema ="

  create table zetyx_board_comment_$table_name (
    no int(11) default '0' not null auto_increment primary key ,
    parent int(11) not null,
    ismember int(20) default '0' not null,
    name char(20),
    password char(20),
    memo text,
    ip char(15),
    reg_date int(13),

    KEY parent (parent)
  )

";


위 내용 중에 있는
        

         reg_date int(13),

    KEY parent (parent)


사이(292번째 줄)에

    p_member int(20) default '0' not null,

를 삽입합니다.

----------------------------------------------------------------------------------

2. 다음으로 기존에 사용하던 게시판이 있다면,
        (처음 install한다면 2번내용은 건너뛰어도 됩니다.)

2-1.        먼저,  DB를 약간 손봐야 합니다.
        아래와 같은 내용으로 add_field.php 라는 파일을 만들고  bbs/  디렉토리에 ftp를 이용해 올립니다.
        그리고, 최고관리자로 로그인한 후 add_field.php를 실행합니다.
        물론 그전에 DB를 Backup하는것은 기본이겠죠....

<?
include "lib.php";

$connect=dbConn();
$member=member_info();

if(!$member[no]) Error("먼저 최고관리자로 로그인하시기 바랍니다.");
if($member[is_admin]!=1) error("최고관리자만이 설치할 수 있습니다.");

echo "<center><font style=font-size:9pt>";

$result = @mysql_query("SELECT name FROM $admin_table");
while(@extract(mysql_fetch_array($result))) {
        @mysql_query("ALTER TABLE zetyx_board_comment"."_$name ADD `p_member` INT(20) DEFAULT '0' NOT NULL",$connect);
        echo "mysql/$t_board_comment"."_$name 테이블이 정상적으로 변환되었습니다.<br>";
        @flush();
}

echo "</center>";
@flush();
?>

        
2-2.다음으로 위에서 추가된 'p_member' field에 코멘트가 누구의 글에 달린것인지를 확인할 수 있는 원본글쓴이의 회원번호를 update해줘야 합니다.
        위에서와 마찬가지로 아래에 있는 내용으로 update_p_member.php 라는 파일을 만들고   bbs/  디렉토리에 ftp를 이용해 올립니다.
        그리고, 최고관리자로 로그인한 후 update_p_member.php를 실행합니다.

<?
include "lib.php";

$connect=dbConn();
$member=member_info();

if(!$member[no]) Error("먼저 최고관리자로 로그인하시기 바랍니다.");
if($member[is_admin]!=1) error("최고관리자만이 설치할 수 있습니다.");

echo "<center><font style=font-size:9pt>";
$result = @mysql_query("SELECT name FROM $admin_table");
while(@extract(mysql_fetch_array($result))) {
        $result_com = @mysql_query("select no,parent from zetyx_board_comment_".$name." where p_member='0' ",$connect);
        while(@extract(mysql_fetch_array($result_com))) {
                $result_board = @mysql_query("select ismember from zetyx_board_"."$name where no=$parent",$connect);
                @extract(mysql_fetch_array($result_board));
                @mysql_query("update zetyx_board_comment_"."$name set p_member=$ismember where no='$no'",$connect) or error(mysql_error());
                echo "name:".$name."-no:".$no."-parent:".$parent."-ismember:".$ismember."<br>";
        @flush();
        }
        echo "mysql/$t_board_comment"."_$name 테이블이 정상적으로 변환되었습니다.<br>";
        @flush();
}
echo "</center>";
@flush();
?>

------------------------------------------------------------------------------


3.         comment_ok.php 파일의 92번째줄에 있는 아래 내용을 수정합니다..

        [수정 전]

// 해당글이 있는 지를 검사
        $check = mysql_fetch_array(mysql_query("select count(*) from $t_board"."_$id where no = '$no'", $connect));
        if(!$check[0]) Error("원본 글이 존재하지 않습니다.");

// 코멘트 입력
        mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip) values ('$parent','$member[no]','$name','$password','$memo','$reg_date','$REMOTE_ADDR')") or error(mysql_error());


        [수정 후]

// 해당글이 있는 지를 검사
        $check = mysql_fetch_array(mysql_query("select ismember from $t_board"."_$id where no = '$no'", $connect));
        if(!$check[0])        {
                Error("원본 글이 존재하지 않습니다.");
        } else {
                $p_member = $check[0];         //원본글 쓴사람 회원번호를 불러온다.
        }

// 코멘트 입력
        mysql_query("insert into $t_comment"."_$id (parent,ismember,name,password,memo,reg_date,ip,p_member) values ('$parent','$member[no]','$name','$password','$memo','$reg_date','$REMOTE_ADDR','$p_member')") or error(mysql_error());


------------------------------------------------------------------------------



4. 마지막으로 이제는 자기글에 달린 댓글을 모으는 일만 남았습니다.



<?
        $_zb_url = "제로보드가 설치된 url/";
        $_zb_path = "제로보드가 설치된 절대경로/";
        include $_zb_path."outlogin.php";

        // 회원레벨에 맞추어 조회권한을 준다         (10등급은 조회불가)
        if ($member[level] > 9)         echo"<script>alert('죄송합니다!\n\n로그인 후 사용이 가능합니다.');history.back();</script>";

        $memo_on_sound;

        $p_member = $member[no];

// Function Recent Comment        
function recent_cmt($num, $textlen, $datetype="Y-m-d H:i") {
        global $_zb_url, $connect, $t_board, $t_comment, $mb_id, $mb_conf, $p_member;

//         수정할 부분         #########################################################
//         예,         $list = array("id1"=>"게시판 제목1", "id2"=>"게시판 제목2", "id3"=>"게시판 제목3", --------);                        
//         여기서 id1,id2,id3,---은 아래에 지정한 게시판id와 같게 해야함.
//         ##################################################################

        $list=array("        "=>"        ","        "=>"        ");                //         빈곳에 직접입력

//         ###################################################################


  // 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; 3: week;)
        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 if($cutTimeMode == 3){
                $cut_time = time() - 3600 * 24*7;   // 7days
        }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 p_member=".$p_member." and 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_clinic] = $list[$id[$i]];
                        $cmt[$tc][p_subject] = cut_str(stripslashes($p_data[subject]), 100);
                        $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 * 24;
        $tmp2 = time() - 3600 * 24 * 3;

        for($i = sizeof($tm)-1; $i >= sizeof($tm)-$num && $i >= 0; $i--){
                $n = $map[$tm[$i]];
                if($cmt[$n][reg_date] > $tmp1){
                        $tmpcolor = "#CC0033";
                }else if($cmt[$n][reg_date] > $tmp2){
                        $tmpcolor = "blue";
                }else{
                        $tmpcolor = "green";
                }

                print "<table width=700>n";
                print "<tr>n";
                print "        <td colspan=2>[".$cmt[$n][p_clinic]."] <a href=".$cmt[$n][p_target]." title='본문으로 바로 이동'><font color=#6699CC><b>".$cmt[$n][p_subject]."</b></font></a><font color=#6699CC> ...".$cmt[$n][p_date]."</font></td>n";
                print "</tr>n";
                print        "<tr>n";
                print        "        <td width=20> </td>n";
                print        "        <td width=680 align=left><font color=$tmpcolor>(<b>".$cmt[$n][name]."</b>)</font> ".$cmt[$n][memo]." <font color=$tmpcolor>(".$cmt[$n][date].")</font></td>n";
                print        "</tr>n";
                print        "</table>nn";        
                
                if($tc) echo"<table width=95% border=0 cellspcing=0 cellpadding=0 align=center><tr height=1><td bgcolor=#E0E0E0></td></tr></table>";
        }
}

?>







<?
        //         이부분을 수정한다.
        //         댓글을 불러올 게시판 id를 넣어준다
    $mb_id = array("id1", "id2", "id3", ------ );
    $mb_conf[timemode] = 0; // 1: 24시간이내,    2: 오늘 0시부터 올라온 코멘트,  3: 7일 이내,    0: 노말

        recent_cmt(10,200);                //         불러올 함수(댓글수,글자수)

?>



위의 내용을 적당히 편집하여 불러오면 되겠죠.

profile 글쓴이 빽짱구

단점이 없는 사람은 장점도 거의 없다 - 에이브러햄 링컨

엮인글 :
https://web.webmini.net/zb4/17393/85b/trackback
소중한 댓글 부탁드립니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 BEST 아이콘이 붙게됩니다.
추천수에 따른 배경색 보기 본문으로 바로가기
  • 추천수 50개이상
  • 추천수 30개이상
  • 추천수 20개이상
  • 추천수 10개이상
  • 추천수 3개이상
닫기

첫번째 댓글을 남겨주세요!

List of Articles
번호 제목 글쓴이 날짜 추천 수sort 조회 수
98 hit best of best 제로보드 pl8 보안 취약점 패치하세요 [2] title: [ani]깜빡이는 표정빽짱구 2006-06-17 63 10263
97 hit best of best 쪽지창을 메신저처럼 하기 file [4] title: [ani]깜빡이는 표정빽짱구 2006-11-16 50 17805
96 best of best 최근게시물에 new 아이콘 달기 title: [ani]깜빡이는 표정빽짱구 2006-11-15 46 6823
95 best of best 최근게시물 클릭시 권한이 없을때 로그인페이지로 이동하기 [1] title: [ani]깜빡이는 표정빽짱구 2006-10-23 45 6449
94 best of best 레벨별로 오른쪽 마우스 금지하기 title: [ani]깜빡이는 표정빽짱구 2006-10-30 44 6248
93 best of best 최근게시물에 카테고리 뽑아오기 [1] title: [ani]깜빡이는 표정빽짱구 2006-11-15 42 7468
92 best of best 글읽기 권한 없을때 로그인 페이지만드는 방법 [1] title: [ani]깜빡이는 표정빽짱구 2006-10-23 38 6888
91 best of best 로그아웃시 원하는 페이지로 이동 시키기 title: [ani]깜빡이는 표정빽짱구 2006-10-24 35 6808
90 best of best 자동글 등록방지하기(광고글) file [1] title: [ani]깜빡이는 표정빽짱구 2006-09-16 35 7588
89 best of best 회원가입이나 수정시 그룹을 바꿀수 있게 하자 title: [ani]깜빡이는 표정빽짱구 2004-07-13 35 3440
88 best of best 아웃로그인 설치 [4] title: [ani]깜빡이는 표정빽짱구 2004-02-12 33 4176
87 best of best 생일자 로그인시 축하메세지 및 축하곡 띄우기 title: [ani]깜빡이는 표정빽짱구 2004-10-24 32 3593
86 best of best 회원들에게 개인 게시판 제공하기 title: [ani]깜빡이는 표정빽짱구 2004-02-24 30 4188
85 best of best 로그인창에 아이디 비밀번호란 이미지넣기 title: [ani]깜빡이는 표정빽짱구 2005-04-05 28 3766
84 best of best 로그아웃시 현재접속자 리스트에서 바로 안나오게 하기 title: [ani]깜빡이는 표정빽짱구 2006-10-06 27 4527
83 best of best 회원가입,정보수정시 글자제한하기. title: [ani]깜빡이는 표정빽짱구 2004-02-21 27 2677
82 best of best 제로보드 에러 페이지를 경고창으로 띄우기 title: [ani]깜빡이는 표정빽짱구 2006-10-26 26 5628
81 best of best 제로보드 서버이전 방법 title: [ani]깜빡이는 표정빽짱구 2004-07-12 25 8845
80 best of best 최근게시물에 오에카키 뽑기 [1] title: [ani]깜빡이는 표정빽짱구 2004-04-12 25 2630
79 best of best 게시판 제목 클릭 시 새창 뜨게하는 법 [4] 톡톡 2004-06-05 24 4212