그룹별로 각 테이블에서 가장높은 조회수를 찾아내어 최신글 출력하는 방법

// 그룹최신글 추출
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>

|

댓글 11개

고생하셨습니다.
유용한 내용을 공개해 주셔서 감사합니다.
필요한데 쓰이길..나스카님 감사요
좋은자료 공개 감사합니다 ... 잘 사용하겠습니다 .. ^^
정말 고생하셨습니다 ㅠㅠ 감사드립니다 추천꾹!
전체글 조회수
그런데 혹시 조회수를 추천수나 댓글수로 바꾸는 부분은 없나요?
$sql .= (!$orderby) ? " order by wr_hit desc " : " order by $orderby desc, wr_id desc ";
위의 부분을 바꾸시면 됩니다. wr_hit 요놈을 추천수필드나 댓글필드로 바꿔주시면 됩니다.

#참고 : 추천수의 경우 wr_good과 wr_nogood 이 있습니다. 응용하시면되고요
댓글인 경우는 wr_comment로 교체해주면 될겁니다.
멋진팁 감사합니다. 몇일이내로 제한하는 날짜지정도 할수있으면 좋겠다는 생각이 드네요.
그건 최신글쪽에 이미 나와있느걸로 아는데요..그걸 적용해서 타임으로 쿼리를 조정하면 되겠네요..
ㅎㅎ
조언 감사합니다.
감사합니다
저는 왜 아무런 내용도 안나올까요?
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요. 나누면 즐거움이 커집니다.

+
제목 글쓴이 날짜 조회
17년 전 조회 6,641
17년 전 조회 4,600
17년 전 조회 3,280
17년 전 조회 2,824
17년 전 조회 2,358
17년 전 조회 2,586
17년 전 조회 2,612
17년 전 조회 5,164
17년 전 조회 3,406
17년 전 조회 5,074
17년 전 조회 5,439
17년 전 조회 4,411
17년 전 조회 3,782
17년 전 조회 3,559
17년 전 조회 4,105
18년 전 조회 4,100
18년 전 조회 9,432
18년 전 조회 1.2만
18년 전 조회 3,629
18년 전 조회 3,217
🐛 버그신고