하나의 게시판에서 내가 작성한 글만 목록에 뜨게하기

하나의 게시판에서 내가 작성한 글만 목록에 뜨게하기

QA

하나의 게시판에서 내가 작성한 글만 목록에 뜨게하기

본문

1:1문의 게시판과 같은개념인데 어떻게 적용해야 할 지 모르겠네요

관리자는 모든 게시글목록을 볼 수 있고 사용자는 자기가 올린 게시물만 뜨게끔 하려면

해당 게시판 스킨의 list.skin.php 파일을 수정해야 하나요?

소스 한번 올려봅니다! 도와주세요

 


<?php 
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
?>
<!-- 게시판 목록 시작 { -->
<div id="bo_list" style="width:<?php echo $width; ?>">
    <!-- 게시판 카테고리 시작 { -->
    <?php if ($is_category) { ?>
    <nav id="bo_cate">
        <h2><?php echo $board['bo_subject'] ?> 카테고리</h2>
        <ul id="bo_cate_ul">
            <?php echo $category_option ?>
        </ul>
    </nav>
    <?php } ?>
    <!-- } 게시판 카테고리 끝 -->
 
    <form name="fboardlist" id="fboardlist" action="./board_list_update.php" onsubmit="return fboardlist_submit(this);" method="post">
    <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
    <input type="hidden" name="sfl" value="<?php echo $sfl ?>">
    <input type="hidden" name="stx" value="<?php echo $stx ?>">
    <input type="hidden" name="spt" value="<?php echo $spt ?>">
    <input type="hidden" name="sca" value="<?php echo $sca ?>">
    <input type="hidden" name="page" value="<?php echo $page ?>">
    <input type="hidden" name="sw" value="">
    <div class="tbl_head01 tbl_wrap">
        <table>
        <caption><?php echo $board['bo_subject'] ?> LIST</caption>
        <thead>
        <tr>
   <?php //제목이 없고 출력 순서가 있는 경우
  
  if($board['bo_16_subj'] != "") {
   $board['bo_16_subj'] = preg_replace("/\s+/", "", $board['bo_16_subj']);
   $field_display = explode("|", $board['bo_16_subj']);
   for($j = 0; $j < count($field_display); $j++) { 
 
    if($field_display[$j] != "이름" && $field_display[$j] != "날짜" ) { // 숫자
      $bo_field = $field_display[$j] + 10;
      $field_value_exp = explode("#!", $board['bo_'.$bo_field]); //순서 숫자에 해당하는 제목 추출
    ?>
        <th scope="col" style="text-align:center;width:<?php echo $field_value_exp[7] ?>px;"><?php echo $field_value_exp[0] ?></th> 
    <?php  } 
    if($field_display[$j] == "이름") { //  ?>
        <th  class="td_name">AG</th>
   <?php } 
    if($field_display[$j] == "날짜") { //  ?>
        <th  class="td_date">DATE</th> 
    <?php } ?>
   <?php } ?>
  <?php } ?>
 
   <?php //모두 출력
  if($board['bo_17_subj'] == "" && $board['bo_16_subj'] == "") {
    for($j = 11; $j <= $board['bo_29_subj'] + 10; $j++) { 
     $field_value_exp = explode("#!", $board['bo_'.$j]);
     //echo $board['bo_'.$j];
     if($board['bo_'.$j] != "") { // 여분 필드만큼 출력?>
       <th  class="td_form"  style="width:<?php echo $field_value_exp[7] ?>px;"><?php echo $field_value_exp[0] ?></th> 
     <?php } ?>
    <?php } ?>
     <th  class="td_form">AG</th>
         <th  class="td_form">DATE</th>     
  <?php } ?>
        </tr>
        </thead>
        <tbody>
        <?php
        for ($i=0; $i<count($list); $i++) {
         ?>
        <tr class="<?php if ($list[$i]['is_notice']) echo "bo_notice"; ?>">
   <? if($board['bo_17_subj'] != "") { ?>
        <td   class="td_form"> <a href="<?php echo $list[$i]['href'] ?>"><?php echo $board['bo_17_subj'] ?> </a></td> 
        <td class="td_name"> <?php echo $list[$i]['name'] ?></td> 
        <td class="td_date"><?php echo $list[$i]['datetime2'] ?></td>    
   <?php } ?> 
   <?php //제목이 없고 출력 순서가 있는 경우
  if($board['bo_17_subj'] == ""  && $board['bo_16_subj'] != "") {
   $board['bo_16_subj'] = preg_replace("/\s+/", "", $board['bo_16_subj']);
   $field_value = $board["bo_".$j];
   $field_value_exp = explode("#!", $field_value);
   $field_display = explode("|", $board['bo_16_subj']);
   if($field_value_exp[8] != " ") $unit = $field_value_exp[8];
   
   for($j = 0; $j < count($field_display); $j++) { 
    $bo_field = $field_display[$j] + 10;
    if($field_display[$j] != "이름" && $field_display[$j] != "날짜" ) { // 숫자 ?>
        <td  class="td_form"><? $m = $bo_field; if($j == 0) { ?> <a href="<?php echo $list[$i]['href'] ?>"> <? } ?> <?php echo $list[$i]['wr_'.$m] ?><? if($j == 0) echo "</a>";  ?><? echo $unit ?></td> 
    <?php } 
    if($field_display[$j] == "이름") { //  ?>
        <td  class="td_form"><?  if($j == 0) { ?> <a href="<?php echo $list[$i]['href'] ?>"> <? } ?> <?php echo $list[$i]['name'] ?><? if($j == 0) echo "</a>";  ?></td> 
    <?php } 
    if($field_display[$j] == "날짜") { //  ?>
        <td  class="td_form"><? if($j == 0) { ?> <a href="<?php echo $list[$i]['href'] ?>"> <? } ?> <?php echo $list[$i]['datetime2'] ?><? if($j == 0) echo "</a>";  ?></td> 
    <?php } ?>
   <?php } ?>
  <?php } ?>
   <?php //모두 출력
  if($board['bo_17_subj'] == "" && $board['bo_16_subj'] == "") {  
    for($j = 11; $j <= $board['bo_29_subj'] + 10; $j++) { 
     $field_value = $board["bo_".$j];
     $field_value_exp = explode("#!", $field_value);
      if($field_value_exp[8] != " ") $unit = $field_value_exp[8];
     if($list[$i]['wr_'.$j] != "") { // 여분 필드만큼 출력?>
       <td  class="td_form"><? if($j == 11) { ?> <a href="<?php echo $list[$i]['href'] ?>"> <? } ?><?php echo $list[$i]['wr_'.$j] ?><? if($j == 11) echo "</a>";  ?><? if($field_value_exp[1] != "math") echo $unit ?></td> 
     <?php } ?>
    <?php } ?>
        <td class="td_name"> <?php echo $list[$i]['name'] ?></td> 
        <td class="td_date"><?php echo $list[$i]['datetime2'] ?></td>     
  <?php } ?>  
        </tr>
        <?php } ?>
        <?php if (count($list) == 0) { echo '<tr><td colspan="'.$colspan.'" class="empty_table">NO BOOKING</td></tr>'; } ?>
        </tbody>
        </table>
    </div>
    <?php if ($list_href || $is_checkbox || $write_href) { ?>
    <div class="bo_fx">
        <?php if ($list_href || $write_href) { ?>
        <ul class="btn_bo_user">
            <?php if ($list_href) { ?><li><a href="<?php echo $list_href ?>" class="btn_b01">BOOKING LIST</a></li><?php } ?>
            <?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b02">NEW BOOKING<?php echo $board['bo_10_subj'] ?></a></li><?php } ?>
        </ul>
        <?php } ?>
    </div>
    <?php } ?>
    </form>
</div>

<!-- 게시판 검색 시작 { -->
<fieldset id="bo_sch">
    <legend>게시물 검색</legend>
    <form name="fsearch" method="get">
    <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
    <input type="hidden" name="sca" value="<?php echo $sca ?>">
    <input type="hidden" name="sop" value="and">
    <label for="sfl" class="sound_only">검색대상</label>
    <select name="sfl" id="sfl">
  
   <?php //제목이 없고 출력 순서가 있는 경우
   for($j = 11; $j <= $board['bo_29_subj'] + 10; $j++) { 
    $field_value = $board["bo_".$j];
    $field_value_exp = explode("#!", $field_value);
    if($field_value_exp[4] != 2 && $board["bo_".$j] != "") { // 검색 항목이 체크되어 있다면 ?>
        <option value="<? echo "wr_".$j?>,1"<?php echo get_selected($sfl, 'wr_$j,1'); ?>><? echo $field_value_exp[0]?></option>
    <?php } ?>
   <?php } ?>
        <option value="mb_id,1"<?php echo get_selected($sfl, 'mb_id,1'); ?>>AG</option>
    </select>
    <label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
    <input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="frm_input required" size="15" maxlength="15">
    <input type="submit" value="SEARCH" class="btn_submit">
    </form>
</fieldset>
<!-- } 게시판 검색 끝 -->
<?php if($is_checkbox) { ?>
<noscript>
<p>자바스크립트를 사용하지 않는 경우<br>별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>
</noscript>
<?php } ?>
<!-- 페이지 -->
<?php echo $write_pages;  ?>
<?php if ($is_checkbox) { ?>
<script>
function all_checked(sw) {
    var f = document.fboardlist;
    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]")
            f.elements[i].checked = sw;
    }
}
function fboardlist_submit(f) {
    var chk_count = 0;
    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
            chk_count++;
    }
    if (!chk_count) {
        alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");
        return false;
    }
    if(document.pressed == "선택복사") {
        select_copy("copy");
        return;
    }
    if(document.pressed == "선택이동") {
        select_copy("move");
        return;
    }
    if(document.pressed == "선택삭제") {
        if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\n답변글이 있는 게시글을 선택하신 경우\n답변글도 선택하셔야 게시글이 삭제됩니다."))
            return false;
        f.removeAttribute("target");
        f.action = "./board_list_update.php";
    }
    return true;
}
// 선택한 게시물 복사 및 이동
function select_copy(sw) {
    var f = document.fboardlist;
    if (sw == "copy")
        str = "복사";
    else
        str = "이동";
    var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
    f.sw.value = sw;
    f.target = "move";
    f.action = "./move.php";
    f.submit();
}
</script>
<?php } ?>
<!-- } 게시판 목록 끝 -->
​

이 질문에 댓글 쓰기 :

답변 1

스킨에서만 처리하기엔.. 목록을 다시 얻어와 페이징까지 다시 가져오지 않으면 꼬이기 쉽상입니다.

bbs/list.php 에서 list.head.skin.php 를 상반부에서 불러와서 해당 조건을 원래의 sql 조건문으로 추가해주는 처리를 해주고 그 조건문을 list.head.skin.php에서 특정게시판일때(bo_table==boardid)만 적용하라는 식으로 해두면 나중에도 관리하기가 쉽긴 합니다만..

복잡하다면 그냥 list.php에 직접 넣어주는게 좋겠죠.

어느쪽이던 수정해야 하는곳은 여러군데가 되겠네요.

 


$sop = strtolower($sop);if ($sop != "and" && $sop != "or")
    $sop = "and";

이 라인 아래에 추가해줄 조건문을 넣어줍니다.

 


$sql_where = ​$sql_where1 = ​$sql_where2 = '';​
if($bo_table=='해당게시판ID' && !$is_admin) $sql_where = ' mb_id="'.$member['mb_id'].'" ';
if($sql_where​) {
    $sql_where​1 = ' where '.$sql_where​​;
    $sql_where​​2 = ' and '.$sql_where​​;​
}

 

$sql_where는 사용되지 않는 변수라 택해봤습니다.

그리고 그 아래에 나오는 sql문에 조건문을 추가해 수정해줍니다.

(비교하시라고 원본은 주석처리로 남겨두었습니다.)

 


    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
    //$sql = " select MIN(wr_num) as min_wr_num from $write_table ";
    $sql = " select MIN(wr_num) as min_wr_num from $write_table ".$sql_where1);

 

그 바로 아래의 sql문도 수정합니다.


    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
    //$sql = " select distinct wr_parent from $write_table where $sql_search ";
    $sql = " select distinct wr_parent from $write_table where $sql_search ".$sql_where2);

 

그리고 조금 내려가서 아래코드를 찾으세요.


if ($sst)
    $sql_order = " order by $sst $sod ";

 

찾으셨으면 그 바로 아래에 나오는 sql문을 수정해줍니다.


if ($sca || $stx)
{
    //$sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
    $sql = " select distinct wr_parent from $write_table where $sql_search ".$sql_where​2." $sql_order limit $from_record, $board[bo_page_rows] ";
}
else
{
    //$sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
    $sql = " select * from $write_table where wr_is_comment = 0 ".$sql_where1." $sql_order limit $from_record, $board[bo_page_rows] ";
}

 

검증은 못해본지라 버그가 있을수는 있겠습니다만 이런식으로 하면 좋지 않을까 합니다.

초반에 언급한대로 list.head.skin.php을 사용하게 하려면 첫번째 추가한 특정게시판일때 조건문 만들어주는 부분에 include 넣으시고 추가했던 내용을 list.head.skin.php에 넣어주면 되겠지요.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,726 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT