gms님의 그룹최신글에서 여분필드사용한 것만 불러오고자 합니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

gms님의 그룹최신글에서 여분필드사용한 것만 불러오고자 합니다. 정보

gms님의 그룹최신글에서 여분필드사용한 것만 불러오고자 합니다.

본문

아래는 gms님의 그룹최신글에서 사용된 부분입니다.
링크1이 원자료입니다.
여기에 여분필드 wr-3을 사용한 자료만을 불러오고자 합니다.
빨간색이 추가부분입니다.
 
----------------------------------------------
 
수정전
$sqlgroup = " select bo_table, bo_subject from $g4[board_table] where gr_id = '$gr_id' and  bo_use_search=1 and order by bo_order_search";
 
수정 후
$sqlgroup = " select bo_table, bo_subject from $g4[board_table] where gr_id = '$gr_id' and  bo_use_search=1 and wr_3>0 order by bo_order_search";
 
----------------------------------------------
 
그랬더니 홈피의 답변은 다음과 같습니다.
 
-----------------------------------------------
 
select bo_table, bo_subject from g4_board where gr_id = 'Link' and bo_use_search=1 and wr_3>0 order by bo_order_search
 
1054 : Unknown column 'wr_3' in 'where clause'
 
error file : /gnuboard4/bbs/board.php
 
------------------------------------------------
 
and wr_3>0 이부분을 어떻게 해야하는지 고수님들의 가르침을 기다립니다.
 

댓글 전체

$g4[board_table] 에는 wr_3처럼 여분필드등이 존재 하지를 않습니다.

해당 테이블의 필드명을 확인하신후 쿼리문을 작성하셔야 두번의 수고가 없습니다....^^

별도로 쿼리를 하셔야 할 듯 합니다.
아무런 디비추가 없이 wr_1, wr_2 를 사용중입니다.
어딘가에 wr_10 까지 사용할 수 있다고 본 것 같아요..

http://jemulpo.net/gnuboard4/bbs/board.php?bo_table=Link4

링크에서 그림 아래의 사람이름과 졸업기수가 그것입니다.
아마도 두번 쿼리를 해야 하는게 맞을듯 싶습니다.

아래 댓글과 마찬가지로 wr_3 필드를 못 찾지요?.  없으니까....^^

그룹에서 해당게시판을 끌고오고 그 게시판에서 wr_3 필드로 또 쿼리해야할듯....^^

도움을 드리지 못해 죄송합니다....
유아원님 감사합니다.
홈피의 그래도 답변은마찬가지입니다
-----------------------------------------------------

select bo_table, bo_subject from g4_board where gr_id = 'Link' and bo_use_search=1 and wr_3 >='0' order by bo_order_search

1054 : Unknown column 'wr_3' in 'where clause'

error file : /gnuboard4/bbs/board.php
자료는 아래입니다.
원본과 수정본을 expend 에 넣고
원본은 헤드에서 <?=latest_group("cunic_group","Link", 15, 40);?> 요렇게 사용하고,
수정본은 테일에서 <?=latest_group_top("cunic_group","Link", 15, 40);?> 이렇게 했습니다.

링크는 http://jemulpo.net/gnuboard4/bbs/board.php?bo_table=Link3 에 링크된 곳 어디나입니다.

<?
if (!defined('_GNUBOARD_')) exit;
/// 함수 정의 시작
// 원본은  http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=1843
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌
function latest_group_top($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' and wr_3 >='0' 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_3 desc " : "  order by $orderby desc, wr_3 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;
}
/// 함수 정의 끝
?>
게시판에서 뽑는건가요...?

게시판의 상단 파일과 하단 파일에서 뽑으면 아래처럼 해야될거에요~

게시판에서는 $gr_id가 $board[gr_id]로 바뀌어야죠~

where gr_id = '$board[gr_id]' and bo_use_search

그리고 위 팁으로 사용해 본 바 썸네일은 뽑지 못한다는 점.

아래 링크를 보면 플록님의 코멘트가 있으니...

http://www.sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=22787#c_22792

그래도 안 된다면~

내공이 부족하여~ ㅎㅎ
그룹에서 뽑습니다.
헤드에서 사용된 원본은  지금 이상태로 잘 작동됩니다.

유아원님 답글에 링크된 곳을 보면 위에서 네입클로바님의 지적과 같지 않나 생각됩니다.
조기 위에 소스로 잘 작동(?)이 되신다고요?....

절대 안될텐데요....^^

이 질문이 해결된건지 아닌지 참으로 궁금합니다.

그룹에서 특정필드 사용글만 뽑기....^^ (위소스를 조금 손보면 가능합니다)
아무런 수정을 하지 않은 원본은 잘 돌아갑니다.
수정본은 안되요.

그누원본의 latest.lib.php 에 wr_3옵션을 넣어서 그룹최신글을 불러오면 작동은 되지만 썸네일에 문제가 발생합니다.
수정본이며 로컬에서 테스트 된것입니다.

<?
if (!defined('_GNUBOARD_')) exit;
/// 함수 정의 시작
// 원본은  http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=1843
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌
function latest_group_top($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_3 >= '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;
}
/// 함수 정의 끝
?>
아래와같이 수정하니 됩니다.
근데, desc로만 됩니다.
어디선가 가능하게해주는 부분이 있을텐데.....

-------------------------------
수정전
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];
}


수정후
if(!$orderby) $op_list[$k] = $row[wr_3];
else  {
$op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]);
$op_list[$k] .= $row[wr_3];
}
정렬부분도 찾았습니다.
소스의 마지막 부분에 있더군요...
아래에서 DESC 또는 ASC 로 고치면 됩니다.
불러오기에서 옵션설정이 있는 것 같은데 작동을 안합니다.

----------------------------------

if($k>0) array_multisort($op_list, SORT_ASC, $list);
if($k>$rows) array_splice($list, $rows);
제 홈에서도 오류나네요 ㅋㅋ

해당 팁은 완벽이 아니었나봅니다~~~

플록님의 팁을 이용해서 테스트 마쳤습니다.

http://www.morssola.co.kr/data/bbs/board.php?bo_table=gtest
조건은 이렇게 걸면 되겠죠~

$sql_common = " from $g4[board_new_table] a, $g4[board_table] b, $g4[group_table] c where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_1 = 'board' ";

bo_1에 board 라고 입력된 것 뽑기~
유아원님!!
늦게까지 관심가져주셔서 감사합니다.

그런데, 이것은 게시판 설정에서 설정한 것을 뽑는 것이지요?
그러니까 설정해준 특정게시판의 최신글을 뽑는 것...

저는 여러게시판의 자료중에서 특정필드를 사용한 자료만을 뽑고자 합니다.
보고게시군요....
혹시나 해서 유아원님의 링크해준 플록님의 자료를 그대로 사용해보았습니다.
홈피의 답글은 다음과 간습니다.

-------------------------------------------------------------------

select a.*, b.bo_subject, c.gr_subject, c.gr_id from g4_board_new a, g4_board b, g4_group c where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = '1' and b.gr_id = 'Link' and a.wr_id = a.wr_parent order by limit 40

1064 : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit 40' at line 4

error file : /gnuboard4/bbs/board.php
// 옵션에 따라 정렬
$sql = "select * from $tmp_write_table where wr_is_comment = 0 ";


==>

// 옵션에 따라 정렬
$sql = "select * from $tmp_write_table where wr_is_comment = 0 and wr_3 > 0";
롤로님!!

님께서 말씀하신대로 해도 되질 않습니다.

$sql = "select * from $tmp_write_table where wr_is_comment = 0 and wr_3 > 0";
$sql = "select * from $tmp_write_table where wr_is_comment = '0' and wr_3 > '0'";
$sql = "select * from $tmp_write_table where wr_is_comment = '0' and wr_3 >= '0'";

어느것을 사용해도 마찬가지입니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT