view와 페이징 별도 작성

view와 페이징 별도 작성

QA

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주 걸리고 그것을 제대로 쓰려면 

몇개월 더 연마를 해야 해요. 

 

데이터를 복사하는 것을 생각해보세요. 

 

 

제가 댓글로 남겼듯이 성격이 다른 로직을 교차해서 사용하면 생각하지 않은 부분에서 

에러가 나와요.  좋은 코딩 스타일이 아니에요.

 

좋은 코딩 스타일에 대한 서적도 많아요. 

 

 

 

ㅎ...제가 잘 못해서 화나신건 아니죠..? 그냥 view페이지를 새로 하나 만들어주는게 제 상태에선 가장 빠르고 쉬울꺼 같았는데 뭐..전혀 좋은 경험이 될 꺼 같지가 않네요 ..ㅎㅎ...


음..외부db를 insert select라..그러면 실시간으로 동기화 해줘야하지 않나여?
하.. 정말 외부db도 겨우 연동했는데.. 답이 안보이네요. 뭐부터 해야할지.
덤프를 알아봐야 하는건지..맨날 11시 12시까지 남아도 제자리이니 답답하네여..

그누보드 덕분에 그래도 조금씩 알아갑니다.

이런식으로 처리 하면 되죠.

select max(wr_id) as wr_id from 그누보드 테이블;

위 쿼리를 실행 해서 가장 높은 wr_id를 가져와요.

select * from 외부 그누보드 테이블 where wr_id > '$wr_id' order by wr_id asc;

while( $row = sql_fetch_array( $result ) ){
      insert 그누보드 테이블
}

이런식으로 내부 그누보드에 데이터를 넣으세요.

위 로직은 board.php 안에 넣어요 iframe으로요.
그러면 구지 if 같은 것으로 제어 할 필요도 없어요.

이렇게 해서 내부 그누보드에 데이터가 복사 되면 그냥 게시판 사용하듯이 사용하면 되요.

제일 좋은 것은 외부 디비 쪽을 내부 그누보드와 같게 하는 것이지만.
보통 외부 시스템 관리자가 그런 작업을 해주지 않을 것이에요.

====================================================================


교차해서 구현 하면 안되요.

bbs/board2.php
list2.php
write2.php
view2.php
등등 이렇게 두개를 만들던가

bbs2,관련 파일들 전부 복사해서 다른 이름으로 저장을 하세요.
그리고 g5_write_를 전부 없애버리세요.

아마 이렇게 하는 것이 더 안정적이고 더 빠를 거에요.

==========================================================

위 방법은 수작없이 많이 들어가니  제일 좋은 것은 데이터 복사(이전, 컨버팅) 이런 방법이
좋아요.

사실 숙련된 사람은 이런 프로그램 몇시간이면 가능해요.
조회만 하면 되는 거잖아요.

음..아니면 혹시 수동으로도 동기화 버튼을 따로 만들어서 이용자가 직접 동기화 후에 그누보드 순정기능을 이용하도록 하고..
외부db를 내부db에 연동시키는게..가징 오류도 덜 날텐데..고민이네여 제가 하나하나 다 고치기엔 능력부족이고..

흔히들 덤프한다고 하는데.. 솔직히 덤프가 뭔지도 잘 몰랐고..ㅎ 괜히 외부db건드렸다가 .. 문제생길까봐 무섭네요

현재 그누보드에서는 db가 동시에 두개가 연동이 안되지 않나요?
근데 어떻게 외부db 데이터를 내부db로 insert 가능할까요?

아무래도 외부데이터가 업데이트 되면서 님의 데이터도 업데이트 되도록 하는 방법이 최적일듯 싶은데요

제 짧은 생각으로는 그렇게 보입니다.

걍 뷰 페이지 하나 추가 ㅎㅎㅎ

제일 편한하다고 생각합니다.  

순정 그누보드를 사용하는게 가장 좋은 방법일 꺼 같은데.. db이전이 문제네요..

흔히들 덤프시키면 된다는데 전 잘 모르겟네요;;

 

제가 내부db쪽 테이블을 외부db에 맞게 셋팅해주고 자료만 그대로 실시간으로 가져와

update 시키면 될 꺼 같은데 ..setTimeout 이나 setInterval 을 이용하고..

그러려면 내부db와 외부db가 동시에 연결되어 있어야하지 않나요?

답변을 작성하시기 전에 로그인 해주세요.
전체 45
QA 내용 검색

회원로그인

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