wr_1 = '1' 인 조건을 추가하여 리스트목록 나타낼때 > 그누4 질문답변

그누4 질문답변

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

wr_1 = '1' 인 조건을 추가하여 리스트목록 나타낼때 정보

wr_1 = '1' 인 조건을 추가하여 리스트목록 나타낼때

본문

게시판에서 리스트 뿌려줄때

현재 기본소스에서 wr_1 = '1'  인 조건을 추가하여 리스트목록으로 보여주려 할때,

list.skin.php 에서  쿼리문을 직접 쓰는게 맞나요?

아니면 기본적으로 만들어진 그누함수를 찾아서 위 조건만 추가시켜주는게 맞나요?

제 생각은 2번째인거 같은데 어느파일에 어느부분에 추가해야 하나요?

댓글 전체

리스트를 처리하는것은
/bbs/list.php 에서 조회한 내역을 스킨/list.skin.php에서 처리하도록 되어있습니다.

그러므로 리스트의 조건 자체를 수정할려면 /bbs/list.php에서 처리를 원하는 특정게시판에 대한 조회일경우 조건값을 wr_1='1'을 추가하는 루틴을 추가하셔야 합니다

/bbs/list.php를 수정하지 않고 스킨에있는 list.skin.php에서 처리하는 방법이 있긴한데 그방법을 사용할경우 속도가 느려질수있습니다.

혹시 참고하시고자 한다면 다음 스킨에 있는 list.skin.php를 참고하십시오.
http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=9703
위의 링크가 깨졌군요.
기존 하나의 스킨을 사용하던것을 관리자님께서 게시판스킨과 일반스킨으로 분리하면서 wr_id가 바뀌것 같습니다.

위의 코멘트에서 list.skin.php참고하라는 링크는 다음을 참고하세요

* 그누보드4 > 게시판스킨 > 관리자와 글작성자만 글을 볼수있게하는 스킨(마이페이지v2)
http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin_board&wr_id=5390
// root 님 감사합니다

리스트의 조건 자체를 수정할려면 /bbs/list.php에서 처리를 원하는
특정게시판에 대한 조회일경우 조건값을 wr_1='1'을 추가하는 루틴을 추가하셔야 합니다

이게 어디인지를 모르겠어요

===============================================/bbs/list.php

$k = 0;

$notice_su=$i; // 추가: 공지+등록글 동시방지

while ($row = sql_fetch_array($result))
{
    // 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
if (!$sca && !$stx)  //////////////////////////////////// 추가
if(in_array($row[wr_id],$arr_notice)) continue;

    if ($sca || $stx)
        $row = sql_fetch(" select * from $write_table where wr_id = '$row[wr_parent]' ");

        $list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);


  ...생략...

    $i++;
    $k++;
}

=================================================
위 /bbs/list.php의 쿼리에 조건값 wr_1='1'  and 를 추가해봤으나 결과는 여전히 바뀐게 없이 나오네요..


예를들어

게시판이 test일때  wr_1='1' 이 추가된 쿼리로 받은걸 $list2 로 받으려면 ???

조금만 더 알려주시면 감사하겠습니다^^;
list.php를 다음처럼 수정해보세요
그리고 다음 소스에서 '게시판1' 부분을 'test'로 수정하세요

    58 // 정렬
    59 // 인덱스 필드가 아니면 정렬에 사용하지 않음
    60 //if (!$sst || ($sst && !(strstr($sst, 'wr_id') || strstr($sst, "wr_datetime")))) {
    61 if (!$sst)
    62 {
    63    $sst  = "wr_num, wr_reply";
    64    $sod = "";
    65 }
    66 $sql_order = " order by $sst $sod ";
        // wr_1 = '1'인것만 찾고자 하는 게시판일때 $sql_order 앞에 and wr_1 = '1'을 추가하도록 수정합니다.
    67 if($bo_table == '게시판1') $sql_order = " and wr_1 = '1' order by $sst $sod ";
    68
    69 if ($sca || $stx)
    70 {
    71    $sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board        [bo_page_rows] ";
    72 }
    73 else
    74 {
    75    $sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_ro        ws] ";
    76 }

ps. 공개하지 말아야할 특별한 이유가 없다면 자기정보 공개를 부탁드립니다^^
해보니까요, 게시판1 에 있는 모든것이 wr_1='1' 인것만 나오네요.. -_-;

게시판1 의  wr_1은 1,2,3,4로 구분되어 있어요.
그래서 list.skin.php 한 페이지에 아래처럼 하고자 합니다
------------------------------------
wr_1 = 1 인 목록리스트
------------------------------------
------------------------------------
wr_1 = 2 인 목록리스트
------------------------------------
------------------------------------
wr_1 = 3 인 목록리스트
------------------------------------
------------------------------------
wr_1 = 4 인 목록리스트    <---------- 게시판 1의 기본설정으로 뿌려줌
------------------------------------


bbs/list_test.php 파일에서  미리 변수와 쿼리를 정해놓고 skin에서 뿌려만 주면 좋으련만...
(bbs/list_test.php)는 이 스킨을 위해 미리 list.php를 하나더 복사해놓고 불러옴(타스킨에는 영향안줌)


해서 노가다하면
------------------------------------
wr_1 = 1 인 목록리스트    <---여기에 아래처럼 기냥
------------------------------------

$sql1 = " select * from $write_table where wr_1='1' ";
$rs1 = sql_query($sql1);
while ($row1 = sql_fetch_array($rs1))
{
echo $row1[wr_1];
echo $row1[wr_2];

...............생략
이런씩으로 리스트 만듦 -_-; (무지 소스 길어짐)

}

문제는 이러면 페이지가 무척 길어지고 방대해집니다.
바로 위 하나만 하더라도 일일이 조건하나마다 while 구문으로 돌려주니
차라리 이 하나만 따로 파일만들어 인크루드 시켜??


이런 생노가다 말고 제일 첨 말씀드린것 처럼
bbs/list_test.php 파일에서  미리 변수와 쿼리를 정해놓고 skin에서 뿌려만 주면 좋으련만...

어떻게 하는게 좋을런지요?
음 사용자가 많지 않거나 데이타 건수가 많지않아서 속도에 큰영향일 미치지 않는다고 판단될경우 ...
제가 처음에 알려드린 링크에서 list.skin.php를 뽑아내셔서

바로 위에서 알려드린 부분을 찾으신후 소스를 다음처럼 수정해보세요.

    66 // $sql_order = " order by $sst $sod "; // 57라인에서 설정하므로 주석처리
        // wr_1 의 값에 따라서 조회하도록 한다.
    67 $sql_order = " and wr_1 = '$sel_no' order by $sst $sod ";
    68


위처럼 수정하신후

브라우저에서 다음처럼 리스트를 호출해보세요.

/bbs/board.php?bo_table=bo01&sel_no=1
/bbs/board.php?bo_table=bo01&sel_no=2
네, 해보니까 잘되긴 하는데요.. 이건 브라우저상에서 호출됨으로 한페이지에 하나의 목록만
나타내는것 아닌지요?

제가 하고자 하는게 한 페이지에 1개의 게시판에서  wr_1의 값에 따라 4등분된 목록이 나오게 한는거죠..

------------------------------------
wr_1 = 1 인 목록리스트
------------------------------------
------------------------------------
wr_1 = 2 인 목록리스트
------------------------------------
------------------------------------
wr_1 = 3 인 목록리스트
------------------------------------
------------------------------------
wr_1 = 4 인 목록리스트 
------------------------------------

제가 잘 못 알고있는건지요?..

현재 위의 제가 적은것 처럼 노가다 하면서도 이건 진짜 아닌데... 라는 생각이 들면서도
작업을 하고 있거든요.. 흐미....
처음질문이..
> 재 기본소스에서 wr_1 = '1'  인 조건을 추가하여 리스트목록으로 보여주려 할때,
wr_1의 내용이 1인것만 보여주는것 아니었나요?


음...
wr_1의 내용을 1,2,3,4 순으로 보여줄려면 하나만 수정하면 됩니다.

 66 $sql_order = " order by $sst $sod ";

위의 66번의 $sql_order 있는 라인을 다음처럼 변경하세요.

 66 $sql_order = " order by wr_1, $sst $sod ";  // wr_1 의 순서대로

만약 순서를 반대로 하고 싶다면

 66 $sql_order = " order by wr_1 desc, $sst $sod ";  // wr_1 의 역순으로
제가 질문드린게 불충분하여 죄송합니다^^
지금도 잘못 이해를 하셨네요..
순차정렬을 원하는게 아니구요
한페이지에 게시판이 4개가 나오는거죠..
게시물 백개가 있다면 그중 wr_1 = 1 이 20개 , 2가 20개, 3이 30개, 4가 30개라하면
------------------------------------
wr_1 = 1 인 목록리스트    <----- 한 행이 아니라 조건이 wr_1 = 1 인 리스트만 20개뽑아 목록이 나오는거죠.
------------------------------------
------------------------------------
wr_1 = 2 인 목록리스트    <---- ' 목록리스트 ' 라고 적어놨었는데요..   
------------------------------------
------------------------------------
wr_1 = 3 인 목록리스트
------------------------------------
------------------------------------
wr_1 = 4 인 목록리스트 
------------------------------------
이게 한페이지에 (list.skin.php)에 뿌려진다는거죠..
그래서 위에 보시면 일일이 조건하나마다 while 구문으로 돌려줘서 리스트목록을 만들고 있어거든요.

그러면 소스가 너무길어지니까 이걸 분명히 깔끔한 뭔 함수 또는 쿼리에서 미리 지정해놓고
리스트 스킨에서 받아들여 조건식으로 돌려주면 되지않을까? 하는 질문이었습니다

root님 신경써 주셔서 너무 감사합니다.
하지만 순차정렬은 아니라서...

방법이 없을까요?
...
계속 엉뚱한 답변만 드리는군요.
가장 좋은 방법은 아무래도 쿼리문에서 UNION을 사용하여 20개씩 조회한 결과물을 한번에 처리하는것이 가장 좋을듯 합니다.
만약 현재 버전의 MySql에서 UNION을 지원하지 않는다면 20개씩 조회후 list에 담은후 그것을 while문으로 처리하는것이 좋을듯 합니다
많이 도움되었습니다.
그런데요, 게시판 하나의 DB를 조건문으로 돌려 뿌리는데 UNION 을 쓰나요? 잘몰라서..

게시판이 따로 2개 이상일때 UNION을 써서 돌리는게 아닌지요?(-_-;)

아니라면 게시판 하나의 DB를 조건문으로 돌려 뿌리는데 UNION 을 어떻게 쓰나요?
위의 내용을 쿼리하나로 뽑을수 있다면 좋은데...
복잡해지는것은 생각하기 싫은..ㅋㅋㅋ

하나로 처리하는 쉬운방법은 UNION을 사용하면 될듯한데.
UNION은 꼭 다른 테이블에서만 사용해야하는것은 아닐것 같군요.
그러므로 같은 테이블에서 wr_1=1에 대한 20개 뽑고 UNION wr_1=2에 대한 20개 UNION wr_1=3... 같은 식으로 처리하면 될듯 합니다
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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