그룹별로 각 테이블에서 가장높은 조회수를 찾아내어 최신글 출력하는 방법 정보
그룹별로 각 테이블에서 가장높은 조회수를 찾아내어 최신글 출력하는 방법본문
// 그룹최신글 추출
function latest_group($skin_dir="", $gr_id, $rows=10, $subject_len=40, $category="", $orderby="")
{
global $config;
global $g4;
$list = array();
$limitrows = $rows;
if($gr_id){
$sqlgroup = " select bo_table, bo_subject from $g4[board_table] where gr_id = '$gr_id' and bo_use_search=1 order by bo_order_search";
}else{
$sqlgroup = " select bo_table, bo_subject from $g4[board_table] where bo_use_search=1 order by bo_order_search";
}
$rsgroup = sql_query($sqlgroup);
if ($skin_dir)
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
else
$latest_skin_path = "$g4[path]/skin/latest/$config[cf_latest_skin]";
//for ($j=0, $k=0; $rowgroup=sql_fetch_array($rsgroup); $j++) {
while ($row=sql_fetch_array($rsgroup)) {
$bo_table = $row[bo_table];
$sql = " select * from {$g4[board_table]} where bo_table = '$bo_table'";
$board = sql_fetch($sql);
$tmp_write_table = $g4[write_prefix] . $bo_table; // °O½AÆC A×AIºi ½CA|AI¸§
$sql = "select * from $tmp_write_table where wr_is_comment = 0 ";
$sql .= (!$category) ? "" : " and ca_name = '$category' ";
$sql .= (!$orderby) ? " order by wr_hit desc " : " order by $orderby desc, wr_id desc ";
$sql .= " limit 0, 1";
$result = sql_query($sql);
for ($i=0; $row2 = sql_fetch_array($result); $i++) {
$wr_subject = get_text($row2[wr_subject]);
$key = $row2[wr_datetime] . $row[bo_table] . $row2[wr_id] ;
$list[$key]->bo_subject = $row[bo_subject];
$list[$key]->bo_table = $row[bo_table];
$list[$key]->mb_id = $row2[mb_id];
$list[$key]->mb_open = $row2[mb_open];
$list[$key]->wr_id = $row2[wr_id];
$list[$key]->wr_parent_id = $row2[wr_parent_id];
$list[$key]->wr_email = $row2[wr_email];
$list[$key]->wr_homepage = $row2[wr_homepage];
$list[$key]->wr_name = get_text(cut_str($row2[wr_name],12));
$list[$key]->wr_subject = get_text(cut_str($row2[wr_subject],$subject_len,'…')); //제목글자수 조정
$list[$key]->wr_comment = $row2[wr_comment];
$list[$key]->wr_content = cut_str(strip_tags($row2[wr_content]),$con_len);//글내용 글자수 조정
$list[$key]->wr_commentcnt = $row2[wr_commentcnt];
$list[$key]->wr_datetime = substr("$row2[wr_datetime]",0,10);
$list[$key]->wr_hit = $row2[wr_hit];
$list[$key]->wr_1 = $row2[wr_1]; //쪽글 때문에 추가
//파일, 링크
$list[$key]->link1 = set_http(get_text(cut_str($row2[wr_link1], 255)));
$link[$key]->link_href1 = "./bbs/board.php?bo_table=$row[bo_table]&wr_id=$row2[wr_id]";
$link[$key]->link_href11 = "./bbs/board.php&bo_table=$row[bo_table]";
$list[$key]->link2 = set_http(get_text(cut_str($row2[wr_link2], 255)));
$link[$key]->link_href2 = "./bbs/gblink.php?bo_table=$row[bo_table]&wr_id=$row2[wr_id]&index=2";
}
}
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
} /// 함수 정의 끝
호출하는방법
<?=latest_group("total_latest_cont", "그룹명", 10, 40); ?>
// 그룹명을 적으면 해당되는 그룹에서 적지않으면 전체 그룹에서 추출합니다.
latest.skin.php하나 만드셔서 다음과 같이 합니다.
<?
if (!defined("_BOARD_")) exit; // 개별 페이지 접근 불가
?>
<table width=100% border=0 cellspacing=0 cellpadding=0>
<?
if (count($list) > 0) {
$p=-1;
krsort($list);
foreach ($list as $key=>$value) {
$p++;
if ($p >= $rows) break;
if ($p) { echo "<tr><td colspan=2 height=1 width=7 height=2></td></tr>"; }
echo "
<tr><td width=16 align=center valign=middle><img src=img/ico/dot01.gif width=4 height=4></td><td height=16 valign=middle><a href='{$link[$key]->link_href1}'><font color=B3B3B3>{$value -> wr_subject}</font></a></td><td width=80><font color=B3B3B3>[{$value -> wr_datetime}]</font></td></tr>";
}
} else {
echo "<tr><td height=100 align=center colspan=3><font color=#b3b3b3>자료가 없습니다.</font></td></tr>";
}
?>
</table>
4
댓글 11개
유용한 내용을 공개해 주셔서 감사합니다.
위의 부분을 바꾸시면 됩니다. wr_hit 요놈을 추천수필드나 댓글필드로 바꿔주시면 됩니다.
#참고 : 추천수의 경우 wr_good과 wr_nogood 이 있습니다. 응용하시면되고요
댓글인 경우는 wr_comment로 교체해주면 될겁니다.

ㅎㅎ
조언 감사합니다.