view와 페이징 별도 작성
본문
안녕하세요.
지금 특정 게시판만 외부db 연동해서 사용하고 있습니다.
그누보드의 테이블명과는 다르게 지어져 있기에
$sql = "쿼리";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++){
$list[$i] = $row;
이런식으로 list.skin.php에 ...해주니 다른 그누보드 기능이 먹통이더라구요..
이 게시판만 외부db를 쓰는거라
그누보드를 손보기 보다는
view와 페이징 등의 기능을 따로 코딩해주고자 합니다..
하단 페이징은
page_list.skin.php라는 것을 새로 만들어
list.skin.php에 include 시켜줬습니다.
page_list.skin
<table border=0 align=center>
<tr>
<?php
//11, 21, 31, 41, 51 ~ : 페이지 리스트의 시작 페이지를 계산하는 코드
$start_page = floor(($current_page -1) / $page_list_size) * $page_list_size +1;
//페이지 리스트의 마지막 페이지 계산하는 코드
$end_page = $start_page + $page_list_size -1;
if($total_page < $end_page) $end_page = $total_page; //페이지 리스트에서 마지막 페이지를 결정
if($start_page >= $page_list_size) {
echo "<a href=$PHP_SELF?no=$prev_list>◀</a>";
}
for($i=$start_page;$i<=$end_page;$i++) {
$page=($i-1)+$page_size; //리스트 페이지값을 no값으로 변환
if($no != $page) //no값과 비교한 후
{
echo "<a href=$PHP_SELF?no=$page> $i </a>"; //현재 페이지가 아닐 경우만 링크를 표시
}else {
echo "<b>$i</b>"; //현재 페이지일 경우에 페이지만 표시
}
}
if($total_page > $end_page) {
$next_list = $end_page * $page_size;
echo "<a href = $PHP_SELF?no=$next_list>▶</a><br>";
}
이런식으로 강의를 보면서 따라했는데..
링크 부분을 ..어떻게 해줘야할지 모르겠습니다.
현재 이 게시판만 제가
스킨폴더를 따로 만들어서 조금씩 수정해서 사용하고 있습니다.
view를 하고자 할 경우..href에 바로 view.skin으로 가도록 링크를 걸어주어야하는건지..
기존의
<a href="<?php echo $list[$i]['href'] ?>"> 링크는 당연히 접속이 안됩니다..
이 링크를 어떤식으로 수정해줘야하는지..
view2.php라는걸 bbs에 넣고 페이지 이동하는건 확인을 했는데..
이걸 어떻게 그누보드랑 같이 써야하는건지..
!-->!-->
답변 3
프로그램 잘 모르시는데.. 열정이 감동이에요.
외부 DB가 테이블명만 다르고 구조는 똑같다면 그냥 게시물 데이터를 내부 그누보드 테이블로 복사를
하세요.
그럼 게시판 프로그램 만들지 않아도 되요.
프로그램은 그냥 코딩한다고 해서 다 해결 되지 않아요.
인젝션 등 해킹, 속도 등등을 고려서 구현 해야 해요.
해결 방법은 무수히 많겠지만 저라면
외부 데이터를 내부 게시판으로 복사해서 그냥 그누보드 순정 상태를 사용할 것이에요.
테이블 구조가 같으면 그냥 insert select 하면 되거든요.
아니면 외부 DB 가 있는 곳을 수정할 거에요.
트리거를 이용해서 그누보드와 동일하게 테이블을 만들 곳에 데이터를 복사하는 거죠.
게시판이 대중화 되었지만 초보가 게시판을 공부하는데는 최소 3주 걸리고 그것을 제대로 쓰려면
몇개월 더 연마를 해야 해요.
데이터를 복사하는 것을 생각해보세요.
제가 댓글로 남겼듯이 성격이 다른 로직을 교차해서 사용하면 생각하지 않은 부분에서
에러가 나와요. 좋은 코딩 스타일이 아니에요.
좋은 코딩 스타일에 대한 서적도 많아요.
아무래도 외부데이터가 업데이트 되면서 님의 데이터도 업데이트 되도록 하는 방법이 최적일듯 싶은데요
제 짧은 생각으로는 그렇게 보입니다.
걍 뷰 페이지 하나 추가 ㅎㅎㅎ
제일 편한하다고 생각합니다.
순정 그누보드를 사용하는게 가장 좋은 방법일 꺼 같은데.. db이전이 문제네요..
흔히들 덤프시키면 된다는데 전 잘 모르겟네요;;
제가 내부db쪽 테이블을 외부db에 맞게 셋팅해주고 자료만 그대로 실시간으로 가져와
update 시키면 될 꺼 같은데 ..setTimeout 이나 setInterval 을 이용하고..
그러려면 내부db와 외부db가 동시에 연결되어 있어야하지 않나요?