여분필드 값으로 그룹에서 최신글 추출하기 질문입니다. 정보
여분필드 값으로 그룹에서 최신글 추출하기 질문입니다.본문
밑에 질문했다가 너무 복잡하게 한 것 같아서 하나씩 다시 질문드립니다.
아래 소스는 특정 그룹에서 최신글을 추출하는 소스입니다.
이 소스를 a라는 그룹의 게시판 게시물 중에서 wr_1의 값이 큰 순서대로 추출할려면 어떻게 해야 하는지 꼬박 밤새워서 그누 질답을 찾다가 안되어서 질문드립니다.
그룹지정은 메인에서 하면 될 것 같고요, wr_1을 비교하는 구문이 있어야 할 것 같은데요..
wr_1에는 글쓴 회원의 포인트가 입력됩니다.
회원님들의 답변을 간절히 부탁드립니다.
<?
if (!defined('_GNUBOARD_')) exit;
/// 함수 정의 시작
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌
function latest_group($skin_dir="", $gr_id, $rows=10, $subject_len=40, $category="", $orderby="")
{
global $config;
global $g4;
$list = array();
$limitrows = $rows;
$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";
$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++) {
$bo_table = $rowgroup[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; // 게시판 테이블 실제이름
// 옵션에 따라 정렬
$sql = "select * from $tmp_write_table where wr_is_comment = 0 ";
$sql .= (!$category) ? "" : " and ca_name = '$category' ";
$sql .= (!$orderby) ? " order by wr_id desc " : " order by $orderby desc, wr_id desc ";
$sql .= " limit $limitrows";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++, $k++) {
if(!$orderby) $op_list[$k] = $row[wr_datetime];
else {
$op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]);
$op_list[$k] .= $row[wr_datetime];
}
$list[$k] = get_list($row, $board, $latest_skin_path, $subject_len);
$list[$k][bo_table] = $board[bo_table];
$list[$k][bo_subject] = $board[bo_subject];
$list[$k][bo_wr_subject] = cut_str($board[bo_subject] . $list[$k][wr_subject], $subject_len);
}
}
if($k>0) array_multisort($op_list, SORT_DESC, $list);
if($k>$rows) array_splice($list, $rows);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
/// 함수 정의 끝
?>
아래 소스는 특정 그룹에서 최신글을 추출하는 소스입니다.
이 소스를 a라는 그룹의 게시판 게시물 중에서 wr_1의 값이 큰 순서대로 추출할려면 어떻게 해야 하는지 꼬박 밤새워서 그누 질답을 찾다가 안되어서 질문드립니다.
그룹지정은 메인에서 하면 될 것 같고요, wr_1을 비교하는 구문이 있어야 할 것 같은데요..
wr_1에는 글쓴 회원의 포인트가 입력됩니다.
회원님들의 답변을 간절히 부탁드립니다.
<?
if (!defined('_GNUBOARD_')) exit;
/// 함수 정의 시작
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌
function latest_group($skin_dir="", $gr_id, $rows=10, $subject_len=40, $category="", $orderby="")
{
global $config;
global $g4;
$list = array();
$limitrows = $rows;
$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";
$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++) {
$bo_table = $rowgroup[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; // 게시판 테이블 실제이름
// 옵션에 따라 정렬
$sql = "select * from $tmp_write_table where wr_is_comment = 0 ";
$sql .= (!$category) ? "" : " and ca_name = '$category' ";
$sql .= (!$orderby) ? " order by wr_id desc " : " order by $orderby desc, wr_id desc ";
$sql .= " limit $limitrows";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++, $k++) {
if(!$orderby) $op_list[$k] = $row[wr_datetime];
else {
$op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]);
$op_list[$k] .= $row[wr_datetime];
}
$list[$k] = get_list($row, $board, $latest_skin_path, $subject_len);
$list[$k][bo_table] = $board[bo_table];
$list[$k][bo_subject] = $board[bo_subject];
$list[$k][bo_wr_subject] = cut_str($board[bo_subject] . $list[$k][wr_subject], $subject_len);
}
}
if($k>0) array_multisort($op_list, SORT_DESC, $list);
if($k>$rows) array_splice($list, $rows);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
/// 함수 정의 끝
?>
댓글 전체
$sql = "select bo_table , bo_subject
from $g4[board_table] a,
$g4[group_table] b
where a.gr_id = b.gr_id
limit 3";
$result = sql_query($sql);
$from_array = array();
if(mysql_num_rows($result))
{
while($row = mysql_fetch_array($result))
{
$from_array[] = " (
SELECT '$row[bo_subject]' as bo_subject , wr_subject, wr_1
FROM {$g4[write_prefix]}{$row[bo_table]}
where wr_is_comment = 0
) ";
}
$sql = " SELECT bo_subject , wr_subject , wr_1
FROM ( ".implode(" UNION " ,$from_array )." ) AS a
order by wr_1 desc
limit 0 , 20 ";
}
$result = mysql_query($sql);
union을 이용하시면 이런식으로 하시던가
new.php를 이용하시면 new_table 에 wr_id 컬럼을 넣으시고
각각 글 수정시 new_table 내용을 수정하시면 됩니다
from $g4[board_table] a,
$g4[group_table] b
where a.gr_id = b.gr_id
limit 3";
$result = sql_query($sql);
$from_array = array();
if(mysql_num_rows($result))
{
while($row = mysql_fetch_array($result))
{
$from_array[] = " (
SELECT '$row[bo_subject]' as bo_subject , wr_subject, wr_1
FROM {$g4[write_prefix]}{$row[bo_table]}
where wr_is_comment = 0
) ";
}
$sql = " SELECT bo_subject , wr_subject , wr_1
FROM ( ".implode(" UNION " ,$from_array )." ) AS a
order by wr_1 desc
limit 0 , 20 ";
}
$result = mysql_query($sql);
union을 이용하시면 이런식으로 하시던가
new.php를 이용하시면 new_table 에 wr_id 컬럼을 넣으시고
각각 글 수정시 new_table 내용을 수정하시면 됩니다
onlymilk74 님 귀한 시간 내어 주셔서 진심으로 감사드립니다.
제가 질문에 올린 소스는 lib.php 소스인데요.
onlymilk74 님께서 알려주신 소스를 lib.php 소스에 덮어 씌우고 메인페이지(index.php)에서
<?=latest_group1("mainbestgood5", "0", "h2", "", "", "10", "30"); //?>
이렇게 불러보니 아무것도 나타나지 않습니다.
제가 한 방식이 맞는것인지요?
초보라 union이라는 단어도 생소하고 "new_table 에 wr_id 컬럼을 넣으시고 " 라는 말씀도 생소해서요..
아래는 알려주신 소스와 기본소스를 합친 소스입니다.
<?
if (!defined('_GNUBOARD_')) exit;
/// 함수 정의 시작
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌
function latest_group1($skin_dir="", $gr_id, $rows=10, $subject_len=40, $category="", $orderby="")
{
global $config;
global $g4;
$list = array();
$limitrows = $rows;
$sql = "select bo_table , bo_subject
from $g4[board_table] a,
$g4[group_table] b
where a.gr_id = b.gr_id
limit 3";
$result = sql_query($sql);
$from_array = array();
if(mysql_num_rows($result))
{
while($row = mysql_fetch_array($result))
{
$from_array[] = " (
SELECT '$row[bo_subject]' as bo_subject , wr_subject, wr_1
FROM {$g4[write_prefix]}{$row[bo_table]}
where wr_is_comment = 0
) ";
}
$sql = " SELECT bo_subject , wr_subject , wr_1
FROM ( ".implode(" UNION " ,$from_array )." ) AS a
order by wr_1 desc
limit 0 , 20 ";
}
$result = mysql_query($sql);
}
?>
다시 한번 답변을 부탁드려 봅니다.
꾸벅.
제가 질문에 올린 소스는 lib.php 소스인데요.
onlymilk74 님께서 알려주신 소스를 lib.php 소스에 덮어 씌우고 메인페이지(index.php)에서
<?=latest_group1("mainbestgood5", "0", "h2", "", "", "10", "30"); //?>
이렇게 불러보니 아무것도 나타나지 않습니다.
제가 한 방식이 맞는것인지요?
초보라 union이라는 단어도 생소하고 "new_table 에 wr_id 컬럼을 넣으시고 " 라는 말씀도 생소해서요..
아래는 알려주신 소스와 기본소스를 합친 소스입니다.
<?
if (!defined('_GNUBOARD_')) exit;
/// 함수 정의 시작
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌
function latest_group1($skin_dir="", $gr_id, $rows=10, $subject_len=40, $category="", $orderby="")
{
global $config;
global $g4;
$list = array();
$limitrows = $rows;
$sql = "select bo_table , bo_subject
from $g4[board_table] a,
$g4[group_table] b
where a.gr_id = b.gr_id
limit 3";
$result = sql_query($sql);
$from_array = array();
if(mysql_num_rows($result))
{
while($row = mysql_fetch_array($result))
{
$from_array[] = " (
SELECT '$row[bo_subject]' as bo_subject , wr_subject, wr_1
FROM {$g4[write_prefix]}{$row[bo_table]}
where wr_is_comment = 0
) ";
}
$sql = " SELECT bo_subject , wr_subject , wr_1
FROM ( ".implode(" UNION " ,$from_array )." ) AS a
order by wr_1 desc
limit 0 , 20 ";
}
$result = mysql_query($sql);
}
?>
다시 한번 답변을 부탁드려 봅니다.
꾸벅.
<?
if (!defined('_GNUBOARD_')) exit;
/// 함수 정의 시작
// 원본은 http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=1843
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌
function latest_group_wr_1($skin_dir="", $gr_id, $rows=10, $subject_len=40, $category="", $orderby="")
{
global $config;
global $g4;
$list = array();
$limitrows = $rows;
$sql = " select bo_table, bo_subject from $g4[board_table] where gr_id = '$gr_id' and bo_use_search = '1' order by bo_order_search ";
$rsgroup = sql_query($sql);
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++) {
$bo_table = $rowgroup[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; // 게시판 테이블 실제이름
// 옵션에 따라 정렬
$sql = "select * from $tmp_write_table where wr_is_comment = 0 ";
$sql .= "and wr_1 "; //네잎클로버가 추가함
$sql .= (!$category) ? "" : " and ca_name = '$category' ";
$sql .= (!$orderby) ? " order by wr_id desc " : " order by $orderby desc, wr_id desc ";
$sql .= " limit $limitrows";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++, $k++) {
if(!$orderby) $op_list[$k] = $row[wr_1];
else {
$op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]);
$op_list[$k] .= $row[wr_1];
}
$list[$k] = get_list($row, $board, $latest_skin_path, $subject_len);
$list[$k][bo_table] = $board[bo_table];
$list[$k][bo_subject] = $board[bo_subject];
$list[$k][bo_wr_subject] = cut_str($board[bo_subject] . $list[$k][wr_subject], $subject_len);
}
}
if($k>0) array_multisort($op_list, SORT_DESC, $list);
if($k>$rows) array_splice($list, $rows);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
/// 함수 정의 끝
?>
이 소스로 해결이 되었습니다.
필요하신 분들은 이소스 사용하시면 될 듯 합니다.
소스 제공해주신 분께 감사드립니다.
if (!defined('_GNUBOARD_')) exit;
/// 함수 정의 시작
// 원본은 http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=1843
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌
function latest_group_wr_1($skin_dir="", $gr_id, $rows=10, $subject_len=40, $category="", $orderby="")
{
global $config;
global $g4;
$list = array();
$limitrows = $rows;
$sql = " select bo_table, bo_subject from $g4[board_table] where gr_id = '$gr_id' and bo_use_search = '1' order by bo_order_search ";
$rsgroup = sql_query($sql);
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++) {
$bo_table = $rowgroup[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; // 게시판 테이블 실제이름
// 옵션에 따라 정렬
$sql = "select * from $tmp_write_table where wr_is_comment = 0 ";
$sql .= "and wr_1 "; //네잎클로버가 추가함
$sql .= (!$category) ? "" : " and ca_name = '$category' ";
$sql .= (!$orderby) ? " order by wr_id desc " : " order by $orderby desc, wr_id desc ";
$sql .= " limit $limitrows";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++, $k++) {
if(!$orderby) $op_list[$k] = $row[wr_1];
else {
$op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]);
$op_list[$k] .= $row[wr_1];
}
$list[$k] = get_list($row, $board, $latest_skin_path, $subject_len);
$list[$k][bo_table] = $board[bo_table];
$list[$k][bo_subject] = $board[bo_subject];
$list[$k][bo_wr_subject] = cut_str($board[bo_subject] . $list[$k][wr_subject], $subject_len);
}
}
if($k>0) array_multisort($op_list, SORT_DESC, $list);
if($k>$rows) array_splice($list, $rows);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
/// 함수 정의 끝
?>
이 소스로 해결이 되었습니다.
필요하신 분들은 이소스 사용하시면 될 듯 합니다.
소스 제공해주신 분께 감사드립니다.