- 메인그룹 -

알지로넷 웹호스팅

위리넷 웹호스팅

유용한팁
메인그룹 > 유용한팁
  • 그룹별 최근글 보기
  • iuman
  • 작성일 : 2009-09-22 11:20:46
  • Homepage : http://iuman.net
    • 이번에 올려드리는 팁에선 기본적인 알지보드기능이외에 수정된곳이 더러있어 파일제공은 힘듭니다.
      아래 소스를 조금만 읽어보시면 어떤형태로 돌아가는지 충분히 이해하시리라 봅니다.
      적용된 이미지를 확인하시려면 아래 링크로 오셔서 확인해주세요
      여기엔 파일이 업로드가 안되네요....
      실제적용된 것은 저의 사이트에서 확인이 가능합니다.
      http://iuman.net/v14/rg4_board/view.php?bbs_code=rgboard&bd_num=115

      http://iuman.net/v14/main/?idx_page=1
      ============================================================


      탭형태로 그룹내 있는 최근 게시물을 보여주는 프로그램 입니다.
      기본 소스제공하니 한번 잘뜯어 보시기 바랍니다.

      ----------------------------------------------------------------
       
      <?
      // 그룹별 최근글 추출소스
      // 제작 : iuman (http://iuman.net)
      // 2009.09.20
      
      $w_day = ""; // 몇일간불러올것인가?
      $w_date = time()-($w_day*24*60*60);
      
      if($bbs_db_num) {
      $list_su = "10"; //게시판 최근글수
      } else {
      $list_su = "3"; //그룹내 게시판별 최근글수
      }
      
      
      if(!$gr_num) rg_href('','그룹정보(그룹번호 : gr_num)를 찾을수 없습니다.','back');
      
      
      /***********************************************/
      $rs->clear();
      $rs->set_table($_table['group']);
      $rs->add_where(" gr_num = '$gr_num' "); // $gr_num 값으로 원하는 그룹을 선택할수 있다. $gr_num 에 직접 원하는 그룹을 입력해도 된다.
      
      $row_t = $rs->fetch();
      $gr_name = $row_t[gr_name];
      /***********************************************/
      
      
      $rs->clear();
      $rs->set_table($_table['bbs_cfg']);
      if($bbs_db_num) $rs->add_where(" bbs_db_num = '$bbs_db_num' ");
      
      while($row = $rs->fetch()){
      
      $rs_b = new recordset($dbcon);
      $rs_b->clear();
      $rs_b->set_table($_table['bbs_body']);
      $rs_b->add_where(" gr_num = '$gr_num' ");
      $rs_b->add_where(" bbs_db_num = $row[bbs_db_num] ");
      if($w_day) $rs_b->add_where(" bd_write_date > $w_date "); // 상단에 원하는 시간값이 입력되어있다면 시간조건을 준다.
      $rs_b->add_where(" bd_delete <> 1 "); // 게시판 삭제조건에서 DB삭제가 아닌 삭제표시만 하였을 경우 해당 글은 나타나지 않도록 조치
      if($list_su) { $rs_b->add_order(" bd_write_date DESC LIMIT $list_su "); } else { $rs_b->add_order(" bd_write_date DESC "); } // 보고자 하는 리스트수값이 있을때 적용
      while($row_b = $rs_b->fetch()){
      $bbs_tmp['type'] = "bbs";
      //$bbs_tmp['etc'] = 'b';
      $bbs_tmp['gr_num'] = $row[gr_num];
      $bbs_tmp['gr_num'] = $row[gr_num];
      $bbs_tmp['bbs_num'] = $row[bbs_num];
      $bbs_tmp['bbs_code'] = $row[bbs_code];
      $bbs_tmp['bbs_name'] = $row[bbs_name];
      $bbs_tmp['bd_num'] = $row_b[bd_num];
      $bbs_tmp['content'] = $row_b[bd_subject];
      $bbs_tmp['cont_text'] = $row_b[bd_content];
      $bbs_tmp['cmt_cnt'] = $row_b[bd_comment_count];
      $bbs_tmp['mb_name'] = $row_b[bd_name];
      $bbs_tmp['mb_num'] = $row_b[mb_num];
      $bbs_tmp['name'] = $row_b[bd_name];
      $bbs_tmp['sec'] = $row_b[bd_secret];
      $bbs_tmp['reg_date'] = $row_b[bd_write_date];
      $bbs_tmp['bd_files'] = $row_b[bd_files];
      
      $bbs_bodys[] = $bbs_tmp;
      unset($bbs_tmp);
      }
      
      
      // 코멘트 불러오기
      $rs_c = new recordset($dbcon);
      $rs_c->clear();
      $rs_c->set_table($_table['bbs_comment']);
      $rs_c->add_where(" gr_num = '$gr_num' ");
      $rs_c->add_where(" bbs_db_num = $row[bbs_db_num] ");
      if($w_day) $rs_c->add_where(" bc_write_date > $w_date ");
      if($list_su) { $rs_c->add_order(" bc_write_date DESC LIMIT $list_su "); } else { $rs_c->add_order(" bc_write_date DESC "); }
      while($row_c = $rs_c->fetch()){
      $rs_s = new recordset($dbcon);
      $rs_s->clear();
      $rs_s->set_table($_table['bbs_body']);
      $rs_s->add_where(" bbs_db_num = $row[bbs_db_num] AND bd_num = $row_c[bd_num] ");
      $row_s = $rs_s->fetch();
      $bbs_tmp['sec'] = $row_s['bd_secret']; //원글이 비밀글인지 확인하고 비밀글의 경우 코멘트도 비밀글로 처리함
      
      $bbs_tmp['type'] = "cmt";
      //$bbs_tmp['etc'] = 'c';
      $bbs_tmp['gr_num'] = $row[gr_num];
      $bbs_tmp['bbs_num'] = $row[bbs_num];
      $bbs_tmp['bbs_code'] = $row[bbs_code];
      $bbs_tmp['bbs_name'] = $row[bbs_name];
      $bbs_tmp['content'] = $row_s[bd_subject];
      $bbs_tmp['reg_date'] = $row_c[bc_write_date];
      $bbs_tmp['bd_num'] = $row_c[bd_num];
      $bbs_tmp['mb_name'] = $row_c[bc_name];
      $bbs_tmp['mb_num'] = $row_c[mb_num];
      $bbs_tmp['name'] = $row_c[bc_name];
      $bbs_tmp['cont_text'] = $row_c['bc_content'];
      
      
      $bbs_bodys[] = $bbs_tmp;
      unset($bbs_tmp);
      }
      
      
      /****************************************************
      // 수정된글 불러오기 - 주석해제시 최근 수정된 글도 보여진다.
      $rs_e = new recordset($dbcon);
      $rs_e->clear();
      $rs_e->set_table($_table['bbs_body']);
      $rs_e->add_where(" gr_num = '$gr_num' ");
      $rs_e->add_where(" bbs_db_num = $row[bbs_db_num] ");
      if($w_day) $rs_e->add_where(" bd_modify_date > $w_date ");
      $rs_e->add_where(" bd_modify_date > 0 ");
      $rs_e->add_where(" bd_delete <> 1 ");
      if($list_su) { $rs_e->add_order(" bd_modify_date DESC LIMIT $list_su "); } else { $rs_e->add_order(" bd_modify_date DESC "); }
      while($row_e = $rs_e->fetch()){
      $bbs_tmp['type'] = "edt";
      //$bbs_tmp['etc'] = "e";
      $bbs_tmp['gr_num'] = $row[gr_num];
      $bbs_tmp['bbs_num'] = $row[bbs_num];
      $bbs_tmp['bbs_code'] = $row[bbs_code];
      $bbs_tmp['bbs_name'] = $row[bbs_name];
      $bbs_tmp['bd_num'] = $row_e[bd_num];
      $bbs_tmp['content'] = $row_e[bd_subject];
      $bbs_tmp['cont_text'] = $row_e[bd_content];
      $bbs_tmp['cmt_cnt'] = $row_e[bd_comment_count];
      $bbs_tmp['mb_name'] = $row_e[bd_name];
      $bbs_tmp['mb_num'] = $row_e[mb_num];
      $bbs_tmp['name'] = $row_e[bd_name];
      $bbs_tmp['sec'] = $row_e[bd_secret];
      $bbs_tmp['reg_date'] = $row_e[bd_modify_date];
      
      $bbs_bodys[] = $bbs_tmp;
      unset($bbs_tmp);
      }
      /****************************************************/
      }
      
      
      // 정렬
      function cmp_24h($a, $b) {
      if ($a['reg_date'] == $b['reg_date']) return 0;
      return ($a['reg_date'] > $b['reg_date']) ? -1 : 1;
      }
      @usort($bbs_bodys, "cmp_24h");
      ?>
      
      
      
      <!-- 컨텐츠 영역 시작 -->
      <div class="content">
      <div class="list_detail">
      <ul class="campaign_tab">
      
      <?
      $rs->clear();
      $rs->set_table($_table['bbs_cfg']);
      $rs->add_where("gr_num = $gr_num ");
      $rs->add_order('bbs_ext5'); //추가필드 bbs_ext5 에 게시판 우선보여줄 순서를 정할 값을 입력해두었음 - 주석처리해도 상관없음
      
      /*****/
      // 게시물수확인
      $rs_cnt = new recordset($dbcon);
      $rs_cnt->clear();
      $rs_cnt->add_field("count(*)");
      $rs_cnt->set_table($_table['bbs_body']);
      $rs_cnt->add_where(" gr_num = '$gr_num' ");
      $rs_cnt->add_where(" bd_delete <> 1 ");
      $rs_cnt->fetch('group_total');//내 게시글 수
      /*****/
      
      ?>
      <li class="<?=(!$bbs_db_num)?"select_on":"select_off";?>"><a href="?idx_page=<?=$idx_page?>"><?=$bbs_gr_num?>전체 <span class="p_red">[<b><?=$group_total?></b>]</span></a></li>
      <?
      while ($bbs_txt=$rs->fetch() ) {
      
      /*****/
      // 게시물수확인
      $rs_cnt = new recordset($dbcon);
      $rs_cnt->clear();
      $rs_cnt->add_field("count(*)");
      $rs_cnt->set_table($_table['bbs_body']);
      $rs_cnt->add_where(" gr_num = '$gr_num' ");
      $rs_cnt->add_where(" bbs_db_num = '$bbs_txt[bbs_db_num]' ");
      $rs_cnt->add_where(" bd_delete <> 1 ");
      $rs_cnt->fetch('row_count');//내 게시글 수
      /*****/
      
      if($bbs_txt['bbs_db_num']==$bbs_db_num) {
      $tab_type = "select_on";
      } else {
      $tab_type = "select_off";
      }
      echo "<li class='$tab_type'><a href='?idx_page={$idx_page}&bbs_db_num={$bbs_txt['bbs_db_num']}'>".$bbs_txt['bbs_name']."<span class='p_red'>[<b>{$row_count}</b>]</span></a></li>";
      }
      ?>
      </ul>
      
      <div class="campaign_list">
      <ul>
      <?
      if(!$bbs_bodys || $bbs_bodys=="0") {
      echo "<div style='padding:20px 0 20px 0;width:100%;text-align:center;line-height:140%;'>등록된 게시물이 없습니다.</div>";
      } else {
      
      foreach($bbs_bodys as $v) {
      $v_cnt++;
      if($v['sec']=="1") {
      $cont_text = "비밀글로 보호됩니다.";
      } else {
      $cont_text = rg_cut_string(strip_tags(nl2br($v['cont_text'])),128,'...');
      }
      
      ?>
      <!-- 최근글 목록이 나오는 부분 -->
      <li>
      <div class="entry_wrap">
      <!-- 작성자정보 -->
      <?
      /****/
      if( $v['mb_num'] > 0 ) {
      $rs_photo = new recordset($dbcon);
      $rs_photo->clear();
      $rs_photo->set_table($_table['member']);
      $rs_photo->add_where("mb_num='".$dbcon->escape_string($v['mb_num'])."'");
      $rs_photo->select();
      if($rs_photo->num_rows()) { // 회원정보가 있을때
      $pdata=$rs_photo->fetch();
      
      $pdata['mb_files']=unserialize($pdata['mb_files']);
      
      if($pdata['mb_files']['photo1']['name']!='') {
      $photo_data = rg_base64("mb_num=$v[mb_num]&key=photo1&mode=view");
      $img_view_url = $_url['member']."mb_data.php?mb_data=".$photo_data;
      } else {
      $img_view_url = "../img/no_face.gif";
      }
      }
      } else { //회원이 아닐경우 이미지없음
      $img_view_url = "../img/no_face.gif";
      }
      /*****/
      ?>
      <div class="image_mb" style="position:relative;"><img src="<?=$img_view_url?>" width="80">
      <div style="position:absolute;left:0;top:64px;width:80px;text-align:right;background:#F8FFA6;filter:Alpha(opacity=80);opacity:0.8;-moz-opacity:0.8;">
      <span style="padding:2px;color:#000000;letter-spacing:;font:bold 12px tahoma;line-height:120%;">
      <?=($v['mb_num']>0)?"<span style='color:blue'>".$v['mb_name']."</span>":$v['mb_name'];?>
      </span>
      </div>
      </div>
      <!-- //작성자정보 -->
      
      <!-- 이미지 -->
      <div class="image_wrap">
      <?
      $bd_files=unserialize($v['bd_files']);
      $thum_width = "120"; //썸네일제작시 가로기준사이즈
      
      if(is_array($bd_files) && (count($bd_files) > 0)) {
      foreach($bd_files as $kk => $vv) {
      if(file_type_chk($vv['type'],'image')) {
      // 파일의 서버경로
      $rg4_img_path = $_path['bbs_data'].$bd_files[$kk][sname];
      // 섬네일의 서버경로
      $rg4_thum_path = $_path['bbs_data'].$bd_files[$kk][sname].'$th$';
      //썸네일 이미지 크기 가로세로 비율 조정
      $rg4_file_info = getimagesize($rg4_img_path);
      
      //이미지는 폭을 기준으로 썸네일작성 가로세로비율을 맞추려면 아래 주석을 해재
      $rg4_thum_width = $thum_width;
      $rg4_thum_height = ceil($rg4_thum_width/$rg4_file_info[0] * $rg4_file_info[1]);
      
      // 썸네일이 없다면 생성한다.
      if(!file_exists($rg4_thum_path)) {
      // 섬네일 함수
      include_once($_path['inc'].'lib_image_convert.php');
      @thumbnailImageCreate($rg4_img_path, $rg4_thum_path, $rg4_thum_width, $rg4_thum_height);
      }
      break;
      }//if end
      else {
      $rg4_thum_path = "../img/noimage12090.jpg";
      $rg4_thum_width =120;
      $rg4_thum_height =90;
      }
      
      }//foreach end
      } else { //if end
      $rg4_thum_path = "../img/noimage12090.jpg";
      $rg4_thum_width =120;
      $rg4_thum_height =90;
      }
      ?>
      <a href="../rg4_board/view.php?bbs_code=<?=$v['bbs_code']?>&bd_num=<?=$v['bd_num']?>"><img src="<?=$rg4_thum_path?>" border="0"></a>
      </div>
      <!-- //이미지 -->
      
      
      
      <div class="text_wrap">
      <img src="../img/ico/icon_<?=$v['bbs_code']?>.gif" class="status" />
      <a href="../rg4_board/view.php?bbs_code=<?=$v['bbs_code']?>&bd_num=<?=$v['bd_num']?>" class="title"><?=($v['sec']=='1')?"<img src='../img/secret.gif'>":"";?><?=rg_cut_string(strip_tags(nl2br($v['content'])),38,'...')?></a>
      <?
      $one_day = time()-(24*60*60);
      
      if ( $v['reg_date'] > $one_day ) {
      echo "<img src='../img/icon_n.gif' align='absmiddle'>";
      }
      ?>
      <p class="summary">
      <?=($v['type']=='cmt')?"<span class='violet' style='letter-spacing:-1'>[코멘트]</span> ":"";?>
      <?=($v['type']=='edt')?"<span class='lightbluegreen' style='letter-spacing:-1'>[수정]</span> ":"";?>
      <?=$cont_text?><br>
      
      <div style="font:11px tahoma;color:#666666;text-align:right;"><?=date("m-d h:i:s",$v['reg_date']);?></div>
      
      </p>
      <? if($v['type']!='cmt') { ?>
      <p class="status"><a href="../rg4_board/view.php?bbs_code=<?=$v['bbs_code']?>&bd_num=<?=$v['bd_num']?>">댓글</a> <span class="p_red"><?=($v['cmt_cnt'])?$v['cmt_cnt']:"0";?></span></p>
      <? } ?>
      </div>
      <div class="clear"></div>
      </div>
      </li>
      <?
      }
      // 변수삭제
      unset($bbs_bodys);
      ?>
      <!-- //최근글 목록이 나오는 부분 -->
      <?
      }
      ?>
      </ul>
      </div>
      
      
      
      
      </div>
      </div>
      <!-- 컨텐츠 영역 끝 -->
    홈페이지다시만들어보자~
    http://iuman.net