게시판 목록 쿼리 대체하기
코어 부분 변경을 최소화 하면서 목록 뽑는 쿼리를 대체하는 방법.
bbs/list.php 파일에 한 줄을 추가 합니다.
아래 코드는 대략 175라인에 있습니다.
[code]
+@include_once("{$board_skin_path}/mutation.list.head.php");
// 페이지의 공지개수가 목록수 보다 작을 때만 실행
if($page_rows > 0) {
$result = sql_query($sql);
[/code]
그리고 스킨에 아래와 같은 내용으로 mutation.list.head.php 파일을 추가하고 적절히 쿼리를 변경해서 사용하면 됩니다.
게시글 목록 뽑을 때 여러 테이블을 조인해서 쿼리를 만들어야 하거나 할 때 사용하면 됩니다.
[code]
$search_realm = trim($_REQUEST['sfl']);
$search_query = trim($_REQUEST['stx']);
$search_logical = trim($_REQUEST['sop']);
$search_category = trim(urldecode($_REQUEST['sca']));
$on_page = (int) $_REQUEST['page'];
$sql_where = " AND A.wr_is_comment = 0";
switch ($search_realm) {
case 'wr_subject':
$sql_where .= " AND INSTR(A.wr_subject, '{$search_query}')";
break;
case 'wr_content':
$sql_where .= " AND INSTR(A.wr_content, '{$search_query}')";
break;
case 'wr_subject||wr_content':
$sql_where .= " AND
(
INSTR(A.wr_subject, '{$search_query}')
OR
INSTR(A.wr_content, '{$search_query}')
)";
break;
}
$sql_where .= empty($search_category) ? '' : " AND A.ca_name = '{$search_category}'";
$sql = "SELECT COUNT(*) AS C
FROM `{$write_table}` A
WHERE 1{$sql_where}";
$result = sql_query($sql);
$row = sql_fetch_array($result);
$page_rows -= (int) $notice_count;
$total_count = (int) $row['C'] + (int) $notice_count;
$total_page = ceil($total_count / $page_rows);
$from_record = ((($on_page < 1) ? 1 : $on_page) -1) * $page_rows;
$sql = "SELECT A.*
FROM `{$write_table}` A
WHERE 1{$sql_where}{$sql_order}
LIMIT {$from_record}, {$page_rows}";
[/code]
bbs/list.php 파일에 한 줄을 추가 합니다.
아래 코드는 대략 175라인에 있습니다.
[code]
+@include_once("{$board_skin_path}/mutation.list.head.php");
// 페이지의 공지개수가 목록수 보다 작을 때만 실행
if($page_rows > 0) {
$result = sql_query($sql);
[/code]
그리고 스킨에 아래와 같은 내용으로 mutation.list.head.php 파일을 추가하고 적절히 쿼리를 변경해서 사용하면 됩니다.
게시글 목록 뽑을 때 여러 테이블을 조인해서 쿼리를 만들어야 하거나 할 때 사용하면 됩니다.
[code]
$search_realm = trim($_REQUEST['sfl']);
$search_query = trim($_REQUEST['stx']);
$search_logical = trim($_REQUEST['sop']);
$search_category = trim(urldecode($_REQUEST['sca']));
$on_page = (int) $_REQUEST['page'];
$sql_where = " AND A.wr_is_comment = 0";
switch ($search_realm) {
case 'wr_subject':
$sql_where .= " AND INSTR(A.wr_subject, '{$search_query}')";
break;
case 'wr_content':
$sql_where .= " AND INSTR(A.wr_content, '{$search_query}')";
break;
case 'wr_subject||wr_content':
$sql_where .= " AND
(
INSTR(A.wr_subject, '{$search_query}')
OR
INSTR(A.wr_content, '{$search_query}')
)";
break;
}
$sql_where .= empty($search_category) ? '' : " AND A.ca_name = '{$search_category}'";
$sql = "SELECT COUNT(*) AS C
FROM `{$write_table}` A
WHERE 1{$sql_where}";
$result = sql_query($sql);
$row = sql_fetch_array($result);
$page_rows -= (int) $notice_count;
$total_count = (int) $row['C'] + (int) $notice_count;
$total_page = ceil($total_count / $page_rows);
$from_record = ((($on_page < 1) ? 1 : $on_page) -1) * $page_rows;
$sql = "SELECT A.*
FROM `{$write_table}` A
WHERE 1{$sql_where}{$sql_order}
LIMIT {$from_record}, {$page_rows}";
[/code]
댓글 2개
격렬한저항
7년 전
리스트
3년 전
감사합니다.
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 | 3년 전 | 4429 | ||
| 2394 | 1년 전 | 5051 | ||
| 2393 |
|
1년 전 | 1701 | |
| 2392 |
|
1년 전 | 1360 | |
| 2391 |
|
1년 전 | 1142 | |
| 2390 |
|
1년 전 | 1198 | |
| 2389 | 1년 전 | 1781 | ||
| 2388 | 1년 전 | 1330 | ||
| 2387 | 1년 전 | 1312 | ||
| 2386 |
투명한열정
|
1년 전 | 3075 | |
| 2385 |
|
1년 전 | 2348 | |
| 2384 | 1년 전 | 1670 | ||
| 2383 | 1년 전 | 1807 | ||
| 2382 | 1년 전 | 1456 | ||
| 2381 |
|
1년 전 | 1874 | |
| 2380 | 1년 전 | 1044 | ||
| 2379 | 1년 전 | 1385 | ||
| 2378 | 1년 전 | 919 | ||
| 2377 | 1년 전 | 2999 | ||
| 2376 | 1년 전 | 1565 | ||
| 2375 | 1년 전 | 1737 | ||
| 2374 |
네이비스택
|
1년 전 | 1118 | |
| 2373 | 1년 전 | 1550 | ||
| 2372 | 1년 전 | 1472 | ||
| 2371 |
goodman148
|
1년 전 | 2112 | |
| 2370 | 1년 전 | 1521 | ||
| 2369 |
|
1년 전 | 1035 | |
| 2368 | 1년 전 | 1838 | ||
| 2367 | 1년 전 | 1357 | ||
| 2366 |
|
1년 전 | 1214 | |
| 2365 | 1년 전 | 2146 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기