채택완료

체크박스에 체크를 하면 게시판 목록에서 안보이게 하고싶습니다.

안녕하세요. 작업중에 안되는 부분이 있어서 질문드립니다..ㅜㅜ

구현하고싶은 내용은

체크박스에 체크를 하면 게시판리스트에서 그 글이 안보이게 하는것입니다.

write.skin.php

Copy
<?php  if ($is_admin == 'super') { ?>		<tr>			<th scope="row">노출안함</th>            <td>				<input type="checkbox" name="wr_5" value="1" id="wr_5" required class="frm_input required">			</td>		</tr>		<?php } ?>

list.skin.php

Copy
<?php if(!$list[$i]['wr_5'] == '1'){?>        <?php        for ($i=0; $i<count($list); $i++) {         ?>        <tr class="<?php if ($list[$i]['is_notice']) echo "bo_notice"; ?>">            <td class="td_num">            <?php            if ($list[$i]['is_notice']) // 공지사항                echo '<strong>공지</strong>';            else if ($wr_id == $list[$i]['wr_id'])                echo "<span class=\"bo_current\">열람중</span>";            else                echo $list[$i]['num'];             ?>            </td>            <?php if ($is_checkbox) { ?>            <td class="td_chk">                <label for="chk_wr_id_<?php echo $i ?>" class="sound_only"><?php echo $list[$i]['subject'] ?></label>                <input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id_<?php echo $i ?>">            </td>            <?php } ?>            <td class="td_subject">                <?php                echo $list[$i]['icon_reply'];                if ($is_category && $list[$i]['ca_name']) {                 ?>                <a href="<?php echo $list[$i]['ca_name_href'] ?>" class="bo_cate_link"><?php echo $list[$i]['ca_name'] ?></a>                <?php } ?>                 <a href="<?php echo $list[$i]['href'] ?>">					<?php if($is_admin) echo $list[$i]['wr_name']; else echo preg_replace('/.(?!..)/u', "$1*", $list[$i]['wr_name']); ?>님의 문의입니다.                    <?php if ($list[$i]['comment_cnt']) { ?><span class="sound_only">댓글</span><?php echo $list[$i]['comment_cnt']; ?><span class="sound_only">개</span><?php } ?>                </a>                 <?php                // if ($list[$i]['link']['count']) { echo '['.$list[$i]['link']['count']}.']'; }                // if ($list[$i]['file']['count']) { echo '<'.$list[$i]['file']['count'].'>'; }                 if (isset($list[$i]['icon_new'])) echo $list[$i]['icon_new'];                if (isset($list[$i]['icon_hot'])) echo $list[$i]['icon_hot'];                if (isset($list[$i]['icon_file'])) echo $list[$i]['icon_file'];                if (isset($list[$i]['icon_link'])) echo $list[$i]['icon_link'];                if (isset($list[$i]['icon_secret'])) echo $list[$i]['icon_secret'];                  ?>            </td>			<td class="td_state"><?php if ($list[$i]['comment_cnt']) { ?><span class="st_ok"><img src="<?php echo $board_skin_url ?>/img/st_yes.png" alt="답변완료" /><span><?php } else { ?><span class="st_no"><img src="<?php echo $board_skin_url ?>/img/st_no.png" alt="답변대기" /></span><?php } ?></td>            <td class="td_name sv_use"><?php if($is_admin) echo $list[$i]['wr_name']; else echo preg_replace('/.(?!..)/u', "$1*", $list[$i]['wr_name']); ?></td>            <td class="td_date"><?php echo $list[$i]['datetime2'] ?></td>            <!--<td class="td_num"><?php //echo $list[$i]['wr_hit'] ?></td>-->            <?php if ($is_good) { ?><td class="td_num"><?php echo $list[$i]['wr_good'] ?></td><?php } ?>            <?php if ($is_nogood) { ?><td class="td_num"><?php echo $list[$i]['wr_nogood'] ?></td><?php } ?>        </tr>        <?php } ?>        <?php if (count($list) == 0) { echo '<tr><td colspan="'.$colspan.'" class="empty_table">게시물이 없습니다.</td></tr>'; } ?>		        <?php } ?>

위에처럼 코딩을 했는데 잘안됩니다..어디가 문제인지 확인부탁드립니다.


감사합니다ㅜㅜ

답변 2개

채택된 답변
+20 포인트

for ($i=0; $i<count($list); $i++) {

if ($list[$i]['wr_5'] == '1') continue;

list.skin.php페이지에서 게시판리스트 출력부분을 만들어서 넣으시면 

페이징처리 부분에서 정상동작하지않습니다.

 

따라서 bbs/list.php 파일에 보시면

165라인에

Copy
if ($sca || $stx) {    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";} else {    $sql = " select * from {$write_table} where wr_is_comment = 0 ";    if(!empty($notice_array))        $sql .= " and wr_id not in (".implode(', ', $notice_array).") ";    $sql .= " {$sql_order} limit {$from_record}, $page_rows "; }

이런부분이있습니다.

해당부분의 $sql쪽의 쿼리문을 wr_5 != 1 이런식으로 조건을 추가하여서

수정을해주셔야 페이징이나 검색쪽에서도 올바르게 작동합니다.

 

Copy
if ($sca || $stx) {    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";} else {    $sql = " select * from {$write_table} where wr_is_comment = 0 and wr_5 != 1";    if(!empty($notice_array))        $sql .= " and wr_id not in (".implode(', ', $notice_array).") ";    $sql .= " {$sql_order} limit {$from_record}, $page_rows ";}

이런식으로 wr_5에 1이없다면 출력하라고 조건을 했죠

하지만 이렇게 하면 관리자로 로그인을 하더라도 해당글은 보이지않습니다.

그렇기때문에


아래와같이 조건을 줘야하죠

조금 응용하시면 가능하리라 봅니다.화이팅하세요

Copy
if ($sca || $stx) {    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";} else {	if(!$is_admin){		$sql = " select * from {$write_table} where wr_is_comment = 0 and wr_5 != 1";		if(!empty($notice_array))			$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";		$sql .= " {$sql_order} limit {$from_record}, $page_rows ";	}else{		$sql = " select * from {$write_table} where wr_is_comment = 0";		if(!empty($notice_array))			$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";		$sql .= " {$sql_order} limit {$from_record}, $page_rows ";	}}

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