체크박스에 체크를 하면 게시판 목록에서 안보이게 하고싶습니다.
본문
안녕하세요. 작업중에 안되는 부분이 있어서 질문드립니다..ㅜㅜ
구현하고싶은 내용은
체크박스에 체크를 하면 게시판리스트에서 그 글이 안보이게 하는것입니다.
write.skin.php
<?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
<?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
for ($i=0; $i<count($list); $i++) {
if ($list[$i]['wr_5'] == '1') continue;
list.skin.php페이지에서 게시판리스트 출력부분을 만들어서 넣으시면
페이징처리 부분에서 정상동작하지않습니다.
따라서 bbs/list.php 파일에 보시면
165라인에
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 이런식으로 조건을 추가하여서
수정을해주셔야 페이징이나 검색쪽에서도 올바르게 작동합니다.
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이없다면 출력하라고 조건을 했죠
하지만 이렇게 하면 관리자로 로그인을 하더라도 해당글은 보이지않습니다.
그렇기때문에
아래와같이 조건을 줘야하죠
조금 응용하시면 가능하리라 봅니다.화이팅하세요
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 ";
}
}