인기글 게시판 관련 질문입니다(추출까진 성공)
본문
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 2;
if ($is_checkbox) $colspan++;
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
// 모든 게시판의 추천/비추천 수가 1개 이상인 게시물 가져오기
$popular_posts = array();
// 게시판 목록 가져오기
$bo_table_list = sql_query("SELECT bo_table FROM {$g5['board_table']}");
while ($bo_table_row = sql_fetch_array($bo_table_list)) {
$bo_table = $bo_table_row['bo_table'];
$sql = "SELECT *, '{$bo_table}' AS bo_table
FROM {$g5['write_prefix']}{$bo_table}
WHERE (wr_good > 0 OR wr_nogood > 0)
AND wr_is_comment = 0";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$popular_posts[] = $row;
}
}
// 추천/비추천 수가 많은 순서대로 정렬
usort($popular_posts, function($a, $b) {
return max($b['wr_good'], $b['wr_nogood']) - max($a['wr_good'], $a['wr_nogood']);
});
?>
<form name="fboardlist" id="fboardlist" action="<?php echo G5_BBS_URL; ?>/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="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<input type="hidden" name="sw" value="">
<?php if ($rss_href || $write_href) { ?>
<ul class="<?php echo isset($view) ? 'view_is_list btn_top' : 'btn_top top btn_bo_user';?>">
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn" title="관리자"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">관리자</span></a></li><?php } ?>
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b03 btn" title="RSS"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>
<?php if ($is_admin == 'super' || $is_auth) { ?>
<li>
<button type="button" class="btn_more_opt btn_b03 btn is_list_btn" title="게시판 리스트 옵션"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">게시판 리스트 옵션</span></button>
<?php if ($is_checkbox) { ?>
<ul class="more_opt is_list_btn">
<li><button type="submit" name="btn_submit" value="선택삭제" onclick="document.pressed=this.value"><i class="fa fa-trash-o" aria-hidden="true"></i> 선택삭제</button></li>
<li><button type="submit" name="btn_submit" value="선택복사" onclick="document.pressed=this.value"><i class="fa fa-files-o" aria-hidden="true"></i> 선택복사</button></li>
<li><button type="submit" name="btn_submit" value="선택이동" onclick="document.pressed=this.value"><i class="fa fa-arrows" aria-hidden="true"></i> 선택이동</button></li>
</ul>
<?php } ?>
</li>
<?php } ?>
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="fix_btn write_btn" title="글쓰기"><i class="fa fa-pencil" aria-hidden="true"></i><span class="sound_only">글쓰기</span></a></li><?php } ?>
</ul>
<?php } ?>
<!-- 게시판 목록 시작 -->
<div id="bo_list">
<?php if ($is_category) { ?>
<nav id="bo_cate">
<h2><?php echo ($board['bo_mobile_subject'] ? $board['bo_mobile_subject'] : $board['bo_subject']) ?> 카테고리</h2>
<ul id="bo_cate_ul">
<?php echo $category_option ?>
</ul>
</nav>
<?php } ?>
<div class="list_01">
<?php if ($is_checkbox) { ?>
<div class="all_chk chk_box">
<input type="checkbox" id="chkall" onclick="if (this.checked) all_checked(true); else all_checked(false);" class="selec_chk">
<label for="chkall">
<span></span>
<b class="sound_only">현재 페이지 게시물 </b> 전체선택
</label>
</div>
<?php } ?>
<ul>
<?php foreach ($popular_posts as $post) { ?>
<li class="<?php if ($post['is_notice']) echo "bo_notice"; ?>">
<?php if ($is_checkbox) { ?>
<div class="bo_chk chk_box">
<input type="checkbox" name="chk_wr_id[]" value="<?php echo $post['wr_id'] ?>" id="chk_wr_id_<?php echo $post['wr_id'] ?>" class="selec_chk">
<label for="chk_wr_id_<?php echo $post['wr_id'] ?>">
<span></span>
<b class="sound_only"><?php echo $post['wr_subject'] ?></b>
</label>
</div>
<?php } ?>
<div class="bo_cnt">
<?php if ($post['is_notice'] || ($is_category && $post['ca_name'])) { ?>
<div class="bo_cate_ico">
<?php if ($post['is_notice']) { ?><strong class="notice_icon">공지</strong><?php } ?>
<?php if ($is_category && $post['ca_name']) { ?>
<a href="<?php echo $post['ca_name_href'] ?>" class="bo_cate_link"><?php echo $post['ca_name']; ?></a>
<?php } ?>
</div>
<?php } ?>
<?php
// 썸네일 표시
$thumb = get_list_thumbnail($post['bo_table'], $post['wr_id'], 50, 50);
if ($thumb['src']) {
$img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" class="bo_thumbnail">';
} else {
$img_content = '';
}
?>
<a href="<?php echo get_pretty_url($post['bo_table'], $post['wr_id']); ?>" class="bo_subject">
<?php echo $img_content; ?>
<?php echo $post['icon_reply']; ?>
<?php if (isset($post['icon_secret'])) echo $post['icon_secret']; ?>
<?php echo $post['wr_subject'] ?>
<?php
if ($post['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
if (isset($post['icon_hot'])) echo $post['icon_hot'];
if (isset($post['icon_file'])) echo '<i class="fa fa-image" aria-hidden="true"></i>';
if (isset($post['icon_link'])) echo $post['icon_link'];
// 유튜브 링크 아이콘 추가
$youtube_icon_added = false;
if (!empty($post['wr_1']) && (strpos($post['wr_1'], 'youtube.com') !== false || strpos($post['wr_1'], 'youtu.be') !== false)) {
echo '<i class="fa fa-video-camera" aria-hidden="true"></i>';
$youtube_icon_added = true;
}
if (!empty($post['wr_2']) && (strpos($post['wr_2'], 'youtube.com') !== false || strpos($post['wr_2'], 'youtu.be') !== false) && !$youtube_icon_added) {
echo '<i class="fa fa-video-camera" aria-hidden="true"></i>';
}
?>
<?php if ($post['wr_comment']) { ?>
<span class="bo_cmt" style="vertical-align: middle; margin-left: 5px;">
<span class="sound_only">댓글</span>
<?php echo $post['wr_comment']; ?>
<span class="sound_only">개</span>
</span>
<?php } ?>
</a>
</div>
<div class="bo_info">
<span class="sound_only">작성자</span><?php echo $post['wr_name'] ?>
<div class="bo_info_right" style="float: right; font-size: 0.8em;">
<span class="bo_date"><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo date('m-d', strtotime($post['wr_datetime'])) ?></span>
<span class="bo_view"><i class="fa fa-eye" aria-hidden="true"></i> <?php echo number_format($post['wr_hit']) ?><span class="sound_only">회</span></span>
<?php if ($is_good) { ?><span class="sound_only">추천</span><i class="fa fa-thumbs-o-up" aria-hidden="true"></i> <?php echo $post['wr_good'] ?><?php } ?>
<?php if ($is_nogood) { ?><span class="sound_only">비추천</span><i class="fa fa-thumbs-o-down" aria-hidden="true"></i> <?php echo $post['wr_nogood'] ?><?php } ?>
</div>
</div>
</li>
<?php } ?>
<?php if (count($popular_posts) == 0) { echo '<li class="empty_table">게시물이 없습니다.</li>'; } ?>
</ul>
</div>
</div>
</form>
<?php if($is_checkbox) { ?>
<noscript>
<p>자바스크립트를 사용하지 않는 경우<br>별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>
</noscript>
<?php } ?>
<!-- 페이지 -->
<?php echo $write_pages; ?>
<div id="bo_list_total">
<span>전체 <?php echo number_format($total_count) ?>건</span>
<?php echo $page ?> 페이지
</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 echo get_board_sfl_select_options($sfl); ?>
</select>
<input name="stx" value="<?php echo stripslashes($stx) ?>" placeholder="검색어를 입력하세요" required id="stx" class="sch_input" size="15" maxlength="20">
<button type="submit" value="검색" class="sch_btn"><i class="fa fa-search" aria-hidden="true"></i> <span class="sound_only">검색</span></button>
</form>
</fieldset>
<?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 = g5_bbs_url+"/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 = g5_bbs_url+"/move.php";
f.submit();
}
// 게시판 리스트 관리자 옵션
jQuery(function($){
$(".btn_more_opt.is_list_btn").on("click", function(e) {
e.stopPropagation();
$(".more_opt.is_list_btn").toggle();
});
$(document).on("click", function (e) {
if(!$(e.target).closest('.is_list_btn').length) {
$(".more_opt.is_list_btn").hide();
}
});
});
</script>
<?php } ?>
<!-- 게시판 목록 끝 -->
보시는 코드처럼 인기글을 추출하는 것까지는 성공했습니다. 근데 한 가지 문제가 있습니다. 인기글 게시판에서 추출된 게시물들을 인식을 못 합니다(?) 무슨 뜻이냐면 메인 페이지에서 추출된 게시물들이 보이지도 않고(다른 게시판의 게시물들은 메인페이지에서도 게시물들이 보입니다), 1페이지당 10개의 게시물로 설정해놨는데 게시물로 인식을 못 해서 추출된 게시물이 10개가 넘어가도 페이지 전환이 안됩니다.. 혹시 어느 부분을 수정해야하는지 알 수 있을까요ㅠ
답변 1
인기글을 추출하는 것까지는 성공했습니다<==나오지 않는데 추출 성공한 것은 어떻게 아는가요?
순서대로 정렬 코드 다음에 넣어서 추출한 내용이 나오는지 보세요 -- 나올 리가 없겠지만....
print_r($popular_posts);
메인 페이지에서 추출된 게시물들이 보이지도 않고 <== 메인에서 include를 잘못 했거나(경로 잘못 지정)
index.php가 여러개 있다보니 index.php 를 잘못 선택했거나...