그누게시판 스크랩기능 베타 소스~ > 그누3 팁자료실

그누3 팁자료실

그누게시판 스크랩기능 베타 소스~ 정보

그누호환 그누게시판 스크랩기능 베타 소스~

첨부파일

gnuscrap.php (8.8K) 86회 다운로드 2004-04-21 21:53:16

본문

안녕하세요... 촙보입니다...
스크랩관련 해서 어제 글을 남겼었는데.. 역시 php&그누보드 초보라...한계에 벽에...퍽~@
여러 고수님들이 손좀 봐서 좀더 좋은 기능으로 그누회원분들 모두 이스크랩 기능을 유용하게 사용할수 있으면..
좋겠다는 생각에 무작정 소스 올립니다..

아직 그누보드 초보라...  형식이 맞는지도 모르겠고...
암튼 제가 만든 사이트는 잘 운영되고하니...
무리없이 베타버전 공개합니다.

자잘한 설명은 생략하겠습니다.. 저도 촙보라...

그리고 아직 소스가 불완전하기에 가급적 저같은 촙보님들은 그누고수님들이 완성판을
만드시기전 까지..
적용을 안하는게 정신건강에도 좋으실듯합니다.  ^^
아마 더나아가 좋은 기능으로 더좋은 스크랩 소스가 나올수 있으니깐요...

그럼...
우선 스크랩을 담아둘수있는 gb_member_scrapbook 테이블 생성합니다.
phpMyAdmin을 이용하시면 편하게 생성하실수 있을거에요...

gb_member_scrapbook 테이블 생성.

CREATE TABLE `gb_member_scrapbook` (
  `no` int(20) NOT NULL auto_increment,
  `mem_no` int(20) NOT NULL default '0',
  `user_id` varchar(100) default NULL,
  `list_id` varchar(100) default NULL,
  `list_no` int(20) NOT NULL default '0',
  `list_subject` varchar(255) default NULL,
  `date` int(13) NOT NULL default '0',
  `image` varchar(255) default NULL,
  PRIMARY KEY  (`no`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

그리고 gb_member 테이블에 필드를 하나 추가/수정 합니다.
전체적으로 수정된 부분을 올리겠습니다.

gb_member 테이블 수정.

CREATE TABLE `gb_member` (
  `mb_no` int(11) NOT NULL auto_increment,  <-- 이게 추가된 부분.
  `mb_id` varchar(20) NOT NULL default '',
  `mb_passwd` varchar(16) NOT NULL default '',
  `mb_realname` varchar(20) NOT NULL default '',
  `mb_name` varchar(20) NOT NULL default '',
  `mb_email` varchar(100) NOT NULL default '',
  `mb_homepage` varchar(255) NOT NULL default '',
  `mb_passwd_q` varchar(255) NOT NULL default '',
  `mb_passwd_a` varchar(255) NOT NULL default '',
  `mb_level` tinyint(4) NOT NULL default '0',
  `mb_jumin` varchar(16) NOT NULL default '',
  `mb_tel` varchar(20) NOT NULL default '',
  `mb_hp` varchar(20) NOT NULL default '',
  `mb_zip1` char(3) NOT NULL default '',
  `mb_zip2` char(3) NOT NULL default '',
  `mb_addr1` varchar(100) NOT NULL default '',
  `mb_addr2` varchar(100) NOT NULL default '',
  `mb_sex` char(1) NOT NULL default '',
  `mb_birth` varchar(8) NOT NULL default '',
  `mb_married` char(1) NOT NULL default '',
  `mb_wedding` varchar(8) NOT NULL default '',
  `mb_signature` text NOT NULL,
  `mb_recommend` varchar(20) NOT NULL default '',
  `mb_icon` varchar(255) NOT NULL default '',
  `mb_point` int(11) NOT NULL default '0',
  `mb_today_point` int(11) NOT NULL default '0',
  `mb_today_login` datetime NOT NULL default '0000-00-00 00:00:00',
  `mb_login_ip` varchar(15) NOT NULL default '',
  `mb_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
  `mb_ip` varchar(15) NOT NULL default '',
  `mb_leave_date` varchar(8) NOT NULL default '',
  `mb_intercept_date` varchar(8) NOT NULL default '',
  `mb_memo` text NOT NULL,
  `mb_mailling` tinyint(4) NOT NULL default '0',
  `mb_open` tinyint(4) NOT NULL default '0',
  `mb_profile` text NOT NULL,
  `mb_size` int(11) NOT NULL default '0',
  `mb_memo_call_mb_id` varchar(20) NOT NULL default '',
  `mb_1` varchar(255) NOT NULL default '',
  `mb_2` varchar(255) NOT NULL default '',
  `mb_3` varchar(255) NOT NULL default '',
  `mb_4` varchar(255) NOT NULL default '',
  `mb_5` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`mb_no`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

이런식으로 수정 해주시고요...
위에 링크된 파일을 받으시고 그누폴더/bbs/에 넣으시면 될거에요...

스크랩을 적용할 게시판스킨에서 gbview.skin.php파일 적당한 부분에 다음을 추가합니다.
<a onfocus=blur() href="javascript:void(window.open('./?doc=bbs/gnuscrap.php&exec=input&list_id=<?=$bo_table?>&list_no=<?=$wr_id?>&list_subject=<?=$subject?>','scrap_add','width=500,height=400,resizable=yes,toolbars=no,scrollbars=auto'))"><span style="font-size:9pt;">[이 글 스크랩]</span></a>


그리고 회원각자가 스크랩을 확인하기위해
outlogin스킨의 outlogin.skin.php파일 적당한 부분에 다음을 추가합니다.
<a href="javascript:winopen('./?doc=bbs/gnuscrap.php','scrap','width=500,height=400,resizable=yes,toolbars=no,scrollbars=auto');">내 스크랩</a>

이로써 모든 설정이 끝이 났습니다...

워낙이 촙보라 그누 형식에 맞는지도 모르겠네요.... 적절하지 않은 부분도 있을거고.... 고쳐야할 부분도 많을거라 생각됩니다.
여러 고수님들께서 좀더 좋은 기능을 추가해서 완벽한 기능의 스크랩이 완성되었으면 합니다.
추천
1
  • 복사

댓글 전체

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/hosting_users/art0644/www/gnu3/bbs/gnuscrap.php on line 32
No. 이미지 제목 이름 날짜 삭제

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/hosting_users/art0644/www/gnu3/bbs/gnuscrap.php on line 67
 
*총 개의 게시글이 스크랩되어 있습니다.
*게시글을 클릭하면 해당 게시글로 이동합니다.
*스크랩상자 비우기 스크랩창 닫기

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/hosting_users/art0644/www/gnu3/bbs/gnuscrap.php on line 190
으으~~이런 에러가 나는데 뭔지..
나루님... gb_member_scrapbook테이블에
`list_wr1` varchar(255) default NULL 필드 하나 추가해주시고요,

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

define("_DOCTYPE_", "NONE");

  $html_title = "나만의 스크랩";
  $scrap_max  = "10";  // 스크랩을 할 수 있는 최대갯수 설정.
  $page_max  = "5";  // 한 페이지당 몇개의 스크랩을 출력할지 설정.     
  $level_no  = "8";  // 레벨별로 스크랩기능 사용 제한. 사용하지 않으려면 0을 입력.
  $bo_subject = "yes"; // 게시판이름을 나타낼 것인지 확인. 사용시 yes
  $wr_file    = "yes"; // 사진기능을 사용할 것인지 확인. 사용시 yes
  $wr_file_x  = "60";  // 사진기능 사용시, 이미지의 가로크기를 설정.
  $wr_file_y  = "50";  // 사진기능 사용시, 이미지의 세로크기를 설정.

if (!$member[mb_id]) {
    alert("회원용 페이지입니다. 로그인하세요", "./?doc=$cfg[bbs_dir]/mblogin.php&url=". urlencode("./?doc=$doc"));
}

if ($member[mb_level] < $level_no){ //접근권한 지정
    alert("정회원만 스크랩 기능을 사용할수 있습니다.","./");
}
?>

<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=euc-kr'>
<title><?=$html_title?></title>
<link rel="stylesheet" href="../common/css/scrap.css" type="text/css">
<!-- 스타일시트는 직접 이쁘게 만드세요. -->
</head>

<body leftmargin='<?=$cfg[leftmargin]?>' topmargin='<?=$cfg[topmargin]?>' <?=$script?>>

<?
// 전체 회원수를 알아옴
$temp=mysql_fetch_array(mysql_query("select count(no) from gb_member_scrapbook where mem_no='$member[mb_no]'"));
$total=$temp[0];

// 페이지 연산
if(!$page) $page=1;

$total_page=ceil($total/7);
$start=($page-1)*7;

$que=mysql_query("select * from gb_member_scrapbook where user_id='$member[mb_id]' order by no desc limit $start,$page_max");

// 상단부분
if($wr_file == "yes")$picture = "<td align=center width=20% bgcolor=#CCCCCC><font color=white>이미지</td>";              // width값 적절이 수정하세요.
if($wr_file == "yes"){
$width1=20;
$width2=20;              // width값 적절이 수정하세요.
$width3=20;
$width4=20;
}else{
$width1=20;
$width2=20;              // width값 적절이 수정하세요.
$width3=20;
$width4=20;
}
echo "<table width=100% border=0 cellpadding=4 cellspacing=0>
      <tr>
      <td align=center width=5% bgcolor=#CCCCCC><font color=white>No.</td>
  $picture
      <td align=center width=$width1% bgcolor=#CCCCCC><font color=white>제목</td>
      <td align=center width=$width2% bgcolor=#CCCCCC><font color=white>내용</td>   
      <td align=center width=30% bgcolor=#CCCCCC><font color=white>이름</td>
      <td align=center width=$width3% bgcolor=#CCCCCC><font color=white>날짜</td>
      <td align=center width=$width4% bgcolor=#CCCCCC><font color=white>삭제</td>
      </tr>";

$v_no=$total-$start+1;

//위 내용부분 wr_1 들어갈자리

// 테이터 출력
while($data=mysql_fetch_array($que))
{
    $list_subject=$data[wr_subject];
    $title=stripslashes($data[list_subject]);
    $title=cut_str($title,10);

//추가 wr_1
    $list_wr1=$data[wr_1];
    $title2=stripslashes($data[list_wr1]);
    $title2=cut_str($title2,10);  // "10" 짜를 문자열
// 추가끝

$image=$data[image];

$name=mysql_fetch_array(mysql_query("select mem_no, wr_name from gb_write_$data[list_id] where wr_id='$data[list_no]'"));
$list=mysql_fetch_array(mysql_query("select bo_subject from gb_board where bo_table='$data[list_id]'"));

$board_name = $list[bo_subject];
$title="<a onfocus=blur() href=# onclick=\"JavaScript:opener.location.href='./?doc=$cfg[bbs_dir]/gnuboard.php&bo_table=$data[list_id]&page=1&wr_id=$data[list_no]'\">$title</a>";
    $date=date("Y-m-d",$data[date]);
    $v_no--;
    $colspan = 6;
   
//그림구하기 함수 끝
    if($wr_file == "yes" && $image){
$image = "<td align=center width=5%><a onfocus=blur() href=# onclick=\"JavaScript:opener.location.href='./?doc=$cfg[bbs_dir]/gnuboard.php&bo_table=$data[list_id]&page=1&wr_id=$data[list_no]'\"><img src='./data/file/".$data[list_id]."/".$data[image]."' width=".$wr_file_x." height=".$wr_file_y." border=0></a></td>";
$colspan = 7;
}else if($wr_file == "yes"){
$image = "<td align=center width=10%>-</td>";
}else{
$image = "";
}
if($bo_subject == "yes"){
$table_subject = "<font color='#3366FF'><span style='font-size:9pt;'>[".$board_name."]</span></font><br>";
} else {
$table_subject = "";
}

$name = $name[wr_name];

echo "<tr>
        <td align=center width=5%>$v_no</td>
$image
        <td align=center width=$width1%>$table_subject$title</td>
        <td align=center width=$width2%>$title2</td>
        <td align=center width=30%>$name</td>
        <td align=center width=$width3%>$date</td>
        <td align=center width=$width4%><a onfocus=blur() href=./?doc=$cfg[bbs_dir]/gnuscrap.php&no=$data[no]&exec=del onclick=\"return confirm('선택한 스크랩을 삭제하시겠습니까?')\">Del</a></td>
</tr>
<tr><td width=100% height=1 colspan=$colspan bgcolor='#FFCCCC'></td></tr>";
}
echo "</table><br>";

// 위쪽 $title2 추가  120라인

// 페이지 나누기
if($total_page > 1)
{
    echo "<table width=60% align=center cellpadding=3 cellspacing=0 style='border-collpase:collapse;' bordercolor=#CCCCCC border=1>
            <tr>
            <td align=center>";

    $page_scale=ceil($total_page/5);
    $now_page=ceil($page/5);

    // 이전 페이지 이동
    if($page > 1){
      $prev_page=$page-1;
      echo "<a onfocus=blur() href=./?doc=$cfg[bbs_dir]/gnuscrap.php&page=$prev_page>prev</a>&nbsp;";
    }

    // 시작, 끝 페이지
    $start_page=($now_page-1)*5+1;
    $end_page=$start_page+4;

    if($end_page > $total_page) $end_page=$total_page;

    // 페이지 루핑
    for($i=$start_page;$i<=$end_page;$i++)
    {
        if($i==$page) echo "&nbsp;<font style=background-color:#CCCCCC; color=white><b>  $i  </b></font>";
        else echo "&nbsp;<a onfocus=blur() href=./?doc=$cfg[bbs_dir]/gnuscrap.php&page=$i>$i</a>&nbsp;";
    }

    // 다음 페이지 이동
    if($total_page > 1)
    {
      $next_page=$page+1;
  if ($next_page > $total_page){
  echo "";
  }else{
      echo "&nbsp;<a onfocus=blur() href=./?doc=$cfg[bbs_dir]/gnuscrap.php&page=$next_page>next</a>";
    }
}
    echo "</td></tr></table><br>";
}
?>     
      <table width=100% border=0 cellpadding=4 cellspacing=0>
      <tr>
      <td>*총 <b><?=$total?></b>개의 게시글이 스크랩되어 있습니다.<br>*<b>게시글</b>을 클릭하면 해당 게시글로 <b>이동</b>합니다.<br>
  <a href=./?doc=bbs/gnuscrap.php&exec=alldel><font color=white>*</font><font color=red onclick="return confirm(' 스크랩상자를 비우시겠습니까? \n 스크랩상자를 비우면 모든 스크랩이 삭제됩니다. \n 복구는 불가능합니다.')">스크랩상자 비우기</font></a></td>
      <td align=center><a onfocus=blur() href=# onclick='window.close()'>스크랩창 닫기</a></td>
      </tr>
      </table>
  <?

// 삭제할 경우
if($exec==del){
  $process=mysql_query("delete from gb_member_scrapbook where no='$no'");
  if($process){
        echo "<meta http-equiv='refresh' content='0;URL=./?doc=$cfg[bbs_dir]/gnuscrap.php&page=$page'>";
  }
}

// 스크랩상자를 비울 경우
if($exec==alldel)
{
$all_del=mysql_query("delete from gb_member_scrapbook where mem_no='$member[mb_no]'") or error(mysql_error());
  if($all_del){
          echo "<script> window.alert('스크랩상자 비우기를 완료하였습니다.')</script>";
  echo "<meta http-equiv='refresh' content='0;URL=./?doc=$cfg[bbs_dir]/gnuscrap.php'>";
  }
}

// 입력할 경우
if($exec==input)
{
  if(!$member[mb_no]){
echo "<script> window.alert('스크랩기능은 회원만 사용가능합니다.'); window.close(); </script>";
  exit;
  }

  // 전체 갯수알아옴
  $temp=mysql_fetch_array(mysql_query("select count(no) from gb_member_scrapbook where mem_no='$member[mb_no]'"));
  $total=$temp[0];

  // 현재 시간
  $now_date=time();

  // 스크랩 DB관리를 위한 번호 알아내기
  $result = mysql_query("SELECT max(no) FROM gb_member_scrapbook");
if (!$result) {
error("Query Error!");
exit;
}
$row = mysql_fetch_row($result);
if($row[0]) {
  $new_no = $row[0] + 1;
} else {
  $new_no = 1;


  // 이미 스크랩한 글인지 체크해봄
  $check=mysql_fetch_array(mysql_query("select count(no) from gb_member_scrapbook where user_id='$member[mb_id]' and list_no='$list_no' and list_id='$list_id'"));
  if($check[0]){
  echo "<script> window.alert('해당 게시글이 이미 ".$member[mb_name]."님의 스크랩북에 추가되어 있습니다.'); </script>";
  exit;
  }

  if($total>=$scrap_max){
  echo "<script> window.alert('스크랩은 ".$scrap_max."개까지 추가할 수 있습니다. 필요없는 스크랩을 지운 후 다시 시도하세요.')</script>";
  echo "<meta http-equiv='refresh' content='0;URL=./?doc=$cfg[bbs_dir]/gnuscrap.php'>";
  exit;
  }
  else {

  // 제목&이미지 구해옴
  $data=mysql_fetch_array(mysql_query("select wr_subject, wr_file1, wr_1 from gb_write_$list_id where wr_id='$list_no'"));
  $list_subject=$data[wr_subject];
  $image=$data[wr_file1];

  // 스크랩북 디비에 입력
  $process=mysql_query("insert into gb_member_scrapbook (no,mem_no,user_id,list_id,list_no,list_subject,date,image,list_wr1)
                        values ('$new_no','$member[mb_no]','$member[mb_id]','$list_id','$list_no','$list_subject','$now_date','$image','$list_wr1')");  // list_wr1, $list_wr1 추가
  if($process){
    echo "<script> window.alert('게시글이 ".$member[mb_name]."님의 스크랩북에 추가되었습니다.'); </script>";
    echo "<meta http-equiv='refresh' content='0;URL=./?doc=$cfg[bbs_dir]/gnuscrap.php'>";
  }
  }
}
?>
</body>
</html>

이렇게 수정해주시고요

스크랩을 적용할 게시판스킨에서 gbview.skin.php파일에 이런식으로 수정을하세요
<a onfocus=blur() href="javascript:void(window.open('./?doc=bbs/gnuscrap.php&exec=input&list_id=<?=$bo_table?>&list_no=<?=$wr_id?>&list_subject=<?=$subject?>&list_wr1=<?=$wr_1?>','scrap_add','width=500,height=400,resizable=yes,toolbars=no,scrollbars=auto'))"><span style="font-size:9pt;">[이 글 스크랩]</span></a>
$name=mysql_fetch_array(mysql_query("select mem_no, wr_name from car_write_$data[list_id] where wr_id='$data[list_no]'"));
에서
mem_no 이 부분을 제거 하면 에러가 안나오는데요... 제거 해도 상관없나요?
아래의 소스로 파일을 만들어 웹상에서 호출하시면 디비에 추가됩니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

define("_DOCTYPE_", "DESIGN");


$html_title = "스크랩 디비생성";



// 접근 권한 검사
if (!$member[mb_id]) {
    alert("최고관리자로 로그인 하십시오.", "./?doc=bbs/mblogin.php&url=" . urlencode("./?doc=$doc"));
} else if (_GNUADMIN_ == "DEFAULT" && $is_admin != "default") {
    alert("최고관리자만 접근 가능합니다.", "./");
} else {
    if ($is_admin != "default") {
        $sql = " select count(*) from $cfg[table_group] where gr_admin = '$member[mb_id]' ";
        $row = sql_fetch($sql);
        if ($row[0]) {
            $is_admin = "group";
        }
    }

    if (!($is_admin == "default" || $is_admin == "group")) {
        alert("그룹관리자 이상 접근 가능합니다.", "./?doc=new_hit.php");
    }
}


mysql_query("CREATE TABLE `gb_member_scrapbook` (
  `no` int(20) NOT NULL auto_increment,
  `mem_no` int(20) NOT NULL default '0',
  `user_id` varchar(100) default NULL,
  `list_id` varchar(100) default NULL,
  `list_no` int(20) NOT NULL default '0',
  `list_subject` varchar(255) default NULL,
  `date` int(13) NOT NULL default '0',
  `image` varchar(255) default NULL,
  PRIMARY KEY  (`no`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
");


mysql_query("ALTER TABLE `gb_member` ADD `mb_no` INT(11) NOT NULL first ;");
mysql_query("ALTER TABLE `gb_member` ADD INDEX ( `mb_no` ) ;");
mysql_query("ALTER TABLE `gb_member` CHANGE `mb_no` `mb_no` INT( 11 ) DEFAULT '0' NOT NULL AUTO_INCREMENT  ;");



  echo "생성 하였습니다.";
  gotourl("./");
 
?>
좋은 자료 넘 감사합니다...
그런데요 설치 했는데 에러가 발생했는데요...
어케 해야할지..

$name=mysql_fetch_array(mysql_query("select mem_no, wr_name from car_write_$data[list_id] where wr_id='$data[list_no]'"));

위 부분에서 에러라구 하는군요...
© SIRSOFT
현재 페이지 제일 처음으로