테스트 사이트 - 개발 중인 베타 버전입니다

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

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

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

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

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

 

</p><p><?php </p><p>// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;</p><p>if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;</p><p>// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
?></p><p><!-- 게시판 목록 시작 { -->
<div id="bo_list" style="width:<?php echo $width; ?>"></p><p>    <!-- 게시판 카테고리 시작 { -->
    <?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 } ?>
    <!-- } 게시판 카테고리 끝 --></p><p> 
    <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=""></p><p>    <div class="tbl_head01 tbl_wrap">
        <table>
        <caption><?php echo $board['bo_subject'] ?> LIST</caption>
        <thead>
        <tr></p><p>   <?php //제목이 없고 출력 순서가 있는 경우
  
  if($board['bo_16_subj'] != "") {
   $board['bo_16_subj'] = preg_replace("/\s+/", "", $board['bo_16_subj']);
   $field_display = explode("|", $board['bo_16_subj']);</p><p>   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  } </p><p>    if($field_display[$j] == "이름") { //  ?>
        <th  class="td_name">AG</th>
   <?php } 
    if($field_display[$j] == "날짜") { //  ?>
        <th  class="td_date">DATE</th> 
    <?php } ?>
   <?php } ?>
  <?php } ?>
 </p><p>   <?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 } ?></p><p>        </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 } ?> </p><p>   <?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 } </p><p>    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 } </p><p>    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 } ?></p><p>   <?php //모두 출력
  if($board['bo_17_subj'] == "" && $board['bo_16_subj'] == "") {  </p><p>    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];</p><p>     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 } ?>  </p><p>        </tr>
        <?php } ?>
        <?php if (count($list) == 0) { echo '<tr><td colspan="'.$colspan.'" class="empty_table">NO BOOKING</td></tr>'; } ?>
        </tbody>
        </table>
    </div></p><p>    <?php if ($list_href || $is_checkbox || $write_href) { ?>
    <div class="bo_fx"></p><p>        <?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></p><p>
<!-- 게시판 검색 시작 { -->
<fieldset id="bo_sch">
    <legend>게시물 검색</legend></p><p>    <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 } ?></p><p>        <option value="mb_id,1"<?php echo get_selected($sfl, 'mb_id,1'); ?>>AG</option></p><p>    </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>
<!-- } 게시판 검색 끝 --></p><p><?php if($is_checkbox) { ?>
<noscript>
<p>자바스크립트를 사용하지 않는 경우
별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>
</noscript>
<?php } ?></p><p><!-- 페이지 -->
<?php echo $write_pages;  ?></p><p><?php if ($is_checkbox) { ?>
<script>
function all_checked(sw) {
    var f = document.fboardlist;</p><p>    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]")
            f.elements[i].checked = sw;
    }
}</p><p>function fboardlist_submit(f) {
    var chk_count = 0;</p><p>    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
            chk_count++;
    }</p><p>    if (!chk_count) {
        alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");
        return false;
    }</p><p>    if(document.pressed == "선택복사") {
        select_copy("copy");
        return;
    }</p><p>    if(document.pressed == "선택이동") {
        select_copy("move");
        return;
    }</p><p>    if(document.pressed == "선택삭제") {
        if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\n답변글이 있는 게시글을 선택하신 경우\n답변글도 선택하셔야 게시글이 삭제됩니다."))
            return false;</p><p>        f.removeAttribute("target");
        f.action = "./board_list_update.php";
    }</p><p>    return true;
}</p><p>// 선택한 게시물 복사 및 이동
function select_copy(sw) {
    var f = document.fboardlist;</p><p>    if (sw == "copy")
        str = "복사";
    else
        str = "이동";</p><p>    var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");</p><p>    f.sw.value = sw;
    f.target = "move";
    f.action = "./move.php";
    f.submit();
}
</script>
<?php } ?>
<!-- } 게시판 목록 끝 -->
​</p><p>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

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

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

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

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

 

</p>$sop = strtolower($sop);<div>if ($sop != "and" && $sop != "or")</div><div>    $sop = "and";</div><p>

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

 

</p><p><span style="font-size: 10pt; line-height: 1.5;"></span><span style="font-size: 10pt; line-height: 1.5;"></span><span style="font-size: 10pt; line-height: 1.5;">$sql_where =</span><span style="font-size: 10pt; line-height: 1.5;"> </span><span style="font-size: 10pt; line-height: 1.5;">​$sql_where1 =</span><span style="font-size: 10pt; line-height: 1.5;"> </span><span style="font-size: 10pt; line-height: 1.5;">​$sql_where2 = '';</span><span style="font-size: 10pt; line-height: 1.5;">​</span></p><p>if($bo_table=='해당게시판ID' && !$is_admin) $sql_where = ' mb_id="'.$member['mb_id'].'" ';</p><p>if(<span style="font-size: 10pt; line-height: 1.5;">$sql_where</span><span style="font-size: 10pt; line-height: 1.5;">​</span><span style="font-size: 10pt; line-height: 1.5;">) {</span></p><p><span style="font-size: 10pt; line-height: 1.5;">    </span><span style="font-size: 10pt; line-height: 1.5;">$sql_where</span><span style="font-size: 10pt; line-height: 1.5;">​1 = ' where '.</span><span style="font-size: 10pt; line-height: 1.5;">$sql_where</span><span style="font-size: 10pt; line-height: 1.5;">​</span><span style="font-size: 10pt; line-height: 1.5;">​</span><span style="font-size: 10pt; line-height: 1.5;">;</span></p><p><span style="font-size: 10pt; line-height: 1.5;">    </span><span style="font-size: 10pt; line-height: 1.5;">$sql_where</span><span style="font-size: 10pt; line-height: 1.5;">​</span><span style="font-size: 10pt; line-height: 1.5;">​2 = ' and '.</span><span style="font-size: 10pt; line-height: 1.5;">$sql_where</span><span style="font-size: 10pt; line-height: 1.5;">​</span><span style="font-size: 10pt; line-height: 1.5;">​;</span><span style="font-size: 10pt; line-height: 1.5;">​</span></p><p><span style="font-size: 10pt; line-height: 1.5;">}</span></p><p>

 

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

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

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

 

</p><p>    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)</p><p>    //$sql = " select MIN(wr_num) as min_wr_num from $write_table ";</p><p><span style="font-size: 10pt; line-height: 1.5;">    $sql = " select MIN(wr_num) as min_wr_num from $write_table ".</span><span style="font-size: 10pt; line-height: 1.5;">$sql_where1</span><span style="font-size: 10pt; line-height: 1.5;">);</span></p><p>

 

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

</p><p>    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)</p><p>    //$sql = " select distinct wr_parent from $write_table where $sql_search ";</p><p><span style="font-size: 10pt; line-height: 1.5;">    $sql = " select distinct wr_parent from $write_table where $sql_search "</span><span style="font-size: 10pt; line-height: 1.5;">.</span><span style="font-size: 10pt; line-height: 1.5;">$sql_where2</span><span style="font-size: 10pt; line-height: 1.5;">)</span><span style="font-size: 10pt; line-height: 1.5;">;</span></p><p>

 

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

</p><p>if ($sst)</p><p>    $sql_order = " order by $sst $sod ";</p><p>

 

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

</p><p>if ($sca || $stx)</p><p>{</p><p>    //$sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";</p><p><span style="font-size: 10pt; line-height: 1.5;">    $sql = " select distinct wr_parent from $write_table where $sql_search ".</span><span style="font-size: 10pt; line-height: 1.5;">$sql_where</span><span style="font-size: 10pt; line-height: 1.5;">​2</span><span style="font-size: 10pt; line-height: 1.5;">." $sql_order limit $from_record, $board[bo_page_rows] ";</span></p><p>}</p><p>else</p><p>{</p><p>    //$sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";</p><p><span style="font-size: 10pt; line-height: 1.5;">    $sql = " select * from $write_table where wr_is_comment = 0 ".</span><span style="font-size: 10pt; line-height: 1.5;">$sql_where1</span><span style="font-size: 10pt; line-height: 1.5;">." $sql_order limit $from_record, $board[bo_page_rows] ";</span></p><p>}</p><p>

 

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

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인

전체 질문 목록