최근게시글 페이지기능 채택완료
</p>
<p>function latest_paging($skin_dir="", $bo_table, $url, $page=1, $page_name="page", $rows=5, $subject_len=40, $write_page=5, $total_count = '', $options="")
{
global $g5;</p>
<p> if (!$skin_dir) $skin_dir = 'basic';</p>
<p> if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
if (G5_IS_MOBILE) {
$latest_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
if(!is_dir($latest_skin_path))
$latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
$latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
} else {
$latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
$latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
}
$skin_dir = $match[1];
} else {
if(G5_IS_MOBILE) {
$latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
$latest_skin_url = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
} else {
$latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
$latest_skin_url = G5_SKIN_URL.'/latest/'.$skin_dir;
}
}</p>
<p> $cache_fwrite = false;
if(G5_USE_CACHE) {
$cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}.php";</p>
<p> if(!file_exists($cache_file)) {
$cache_fwrite = true;
} else {
if($cache_time > 0) {
$filetime = filemtime($cache_file);
if($filetime && $filetime < (G5_SERVER_TIME - 3600 * $cache_time)) {
@unlink($cache_file);
$cache_fwrite = true;
}
}
if(!$cache_fwrite) {
try{
$file_contents = file_get_contents($cache_file);
$file_ex = explode("\n\n", $file_contents);
$caches = unserialize(base64_decode($file_ex[1]));</p>
<p> $list = (is_array($caches) && isset($caches['list'])) ? $caches['list'] : array();
$bo_subject = (is_array($caches) && isset($caches['bo_subject'])) ? $caches['bo_subject'] : '';
} catch(Exception $e){
$cache_fwrite = true;
$list = array();
}
}
}
}</p>
<p> if(!G5_USE_CACHE || $cache_fwrite) {
$list = array();</p>
<p> $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
$board = sql_fetch($sql);
$bo_subject = get_text($board['bo_subject']);</p>
<p> $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
$sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by wr_num limit 0, {$rows} ";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
try {
unset($row['wr_password']); //패스워드 저장 안함( 아예 삭제 )
} catch (Exception $e) {
}
$row['wr_email'] = ''; //이메일 저장 안함
if (strstr($row['wr_option'], 'secret')){ // 비밀글일 경우 내용, 링크, 파일 저장 안함
$row['wr_content'] = $row['wr_link1'] = $row['wr_link2'] = '';
$row['file'] = array('count'=>0);
}
$list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
}</p>
<p> if($cache_fwrite) {
$handle = fopen($cache_file, 'w');
$caches = array(
'list' => $list,
'bo_subject' => sql_escape_string($bo_subject),
);
$cache_content = "<?php if (!defined('_GNUBOARD_')) exit; ?>\n\n";
$cache_content .= base64_encode(serialize($caches)); //serialize</p>
<p> fwrite($handle, $cache_content);
fclose($handle);</p>
<p> @chmod($cache_file, 0640);
}
}</p>
<p>
if($total_count == "")
{
$sql = sql_fetch(" select count(*) as cnt, MIN(wr_num) as n_num, MAX(wr_num) as m_num from {$tmp_write_table} where wr_is_comment = 0 order by wr_num");
$total_count = $sql[cnt];
$min_number = $sql[n_num];
$max_number = $sql[m_num];
} else {
$sql = sql_fetch(" select count(*) as cnt, MIN(wr_num) as n_num from $tmp_write_table where wr_is_comment = 0 order by wr_num limit 0, $total_count");
$min_number = $sql[n_num];
$max_number = $sql[n_num] + $total_count;
}</p>
<p> $total_page = ceil($total_count / $rows); // 전체 페이지 계산
if (!$page) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함</p>
<p> </p>
<p> //explain($sql);
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
}</p>
<p> if(strstr($url, "?")) {
$connect = "&";
} else {
$connect = "?";
}</p>
<p> $write_pages = get_paging($write_page, $page, $total_page, $url.$connect.$page_name."=");</p>
<p> ob_start();
include $latest_skin_path.'/latest.skin.php';
$content = ob_get_contents();
ob_end_clean();</p>
<p> return $content;
}</p>
<p>
이렇게 수정 했는데 이전,다음만 나오고 중간 숫자는 나오지 않습니다..
그누보드4 소스를 수정 한건데요 어디가 잘못된걸 까요..ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
6년 전
112행 바로 위에 전달 값들을 출력해보세요//값이 제대로 전달 되는지 확인
echo "$write_page, $page, $total_page, $url.$connect.$page_name";
로그인 후 평가할 수 있습니다
답변에 대한 댓글 2개
�
6년 전
�
6년 전
정상적인 값이 나온다구요?
그렇다면 페이지 번호가 안 나올 이유가 없는데요?
$total_page 값이 얼마가 나오나요?
config.php에서 캐시부분 변경하지않았다면 장상적인 값이 나올 수가 없는데요???
캐시사용 중이면 $tmp_write_table는 값이 없으니 쿼리문 에러일텐데요
캐시를 사용 하지않고 해보세요
config.php에서 define('G5_USE_CACHE', true);-->define('G5_USE_CACHE', true);
수정해서 테스트 끝나면 원상태로 만드세요
---------------------
그나저나 최신글에서 페이징이 무슨 의미가 있는지 모르겠네요
2페이지 클릭한다고 해서 최신글 2페이지 리스트로 가나요?
그렇다면 페이지 번호가 안 나올 이유가 없는데요?
$total_page 값이 얼마가 나오나요?
config.php에서 캐시부분 변경하지않았다면 장상적인 값이 나올 수가 없는데요???
캐시사용 중이면 $tmp_write_table는 값이 없으니 쿼리문 에러일텐데요
캐시를 사용 하지않고 해보세요
config.php에서 define('G5_USE_CACHE', true);-->define('G5_USE_CACHE', true);
수정해서 테스트 끝나면 원상태로 만드세요
---------------------
그나저나 최신글에서 페이징이 무슨 의미가 있는지 모르겠네요
2페이지 클릭한다고 해서 최신글 2페이지 리스트로 가나요?
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인전체 질문 목록
답변대기
채택
채택
채택
채택
채택
채택
답변대기
채택
채택
채택
답변대기
채택
채택
답변대기
채택
채택
채택
채택
잘은 모르지만
[code]
$sql = " select * from {$tmp_write_table} where wr_is_comment = 0 AND (wr_num between '".$min_number."' and '".$max_number."') order by wr_num limit {$from_record}, {$rows} ";
[/code]
이게 g5랑 맞지 않는것일수도 있나요??