다중 카테고리에 대해 질문해요. > 그누4 질문답변

그누4 질문답변

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

다중 카테고리에 대해 질문해요. 정보

다중 카테고리에 대해 질문해요.

본문

다중 카테고리를 쓰려고 하는데요.
카테고리 aaa,bbb,ccc,ddd 에서 aaa,ccc,ddd 식으로 중복으로 선택가능한 다중카테고리를 사용하고자 합니다.
 
글 쓰기 화면에서는
체크 박스로 선택 가능하게 만들었습니다만..
 
./board.php?bo_table=site&sca=aaa 라고 선택하면 나오도록 수정했습니다만..
검색기능이 제대로 작동하지 않네요..;;
 
어찌된건지.. 모르겠습니다.
 
 
 
플록님의 다중선택갤러리 소스를 이용하였습니다.
 
write.skin.php에서..
  <?
  $key = explode("|", $board['bo_category_list']);
  foreach( $key as $ctg){
    $arr = explode(",", $write['ca_name']);
    $str = "";
    for ($j=0; $j<count($arr); $j++){
      if (trim($arr[$j]))
        $str .=  ($ctg == $arr[$j])?"checked":" ";
    }
        ?><input type='checkbox' value='<?=$ctg?>' name='multi_ctg[]' id='<?=$ctg?>' <?=$str?>><label for='<?=$ctg?>' style="cursor:pointer"><?=$ctg?></label>  <?
  }
  ?>
이 소스를 적용했구요.
 
list.skin.php
//############################## 목록 및 내부검색 제어 - list.php참고 플록
//분류 선택 또는 검색어가 있다면
if ($sca || $stx){
 
    $sql_search = "";
    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);
    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
    $sql = " select MIN(wr_num) as min_wr_num from $write_table ";
    $row = sql_fetch($sql);
    $min_spt = $row[min_wr_num];
    if (!$spt) $spt = $min_spt;
    //분류정렬
    $spos = "";
    $spos = (isset($sca))?" or instr( ca_name, '," . $sca . ",')":" ";//$sca 변수 있다면 ca_name 필드검색
    $sql_search .= " " . $spos . " and (wr_num between '" . $spt . "' and '" . ($spt + $config[cf_search_part]) . "') ";
    //$sca는 이미 있으므로 or ca_name like '%" . $sca . "%' 또는 or instr( ca_name, '" . $sca . "') 사용
    //ca_name 필드속성 및 속도관련 체크 필요
    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
    $sql = " select distinct wr_parent from $write_table where $sql_search ";
    $result = sql_query($sql);
    $total_count = mysql_num_rows($result);
}
else{
    $sql_search = "";
    $total_count = $board[bo_count_write];
}
$total_page  = ceil($total_count / $board[bo_page_rows]);  // 전체 페이지 계산
if (!$page){
    $page = 1;
    } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $board[bo_page_rows]; // 시작 열을 구함
if ($board[bo_gallery_cols])
    $td_width = (int)(100 / $board[bo_gallery_cols]);
// 정렬
if (!$sst){
    if ($board[bo_sort_field])
        $sst = $board[bo_sort_field];
    else
        $sst  = "wr_num, wr_reply";
    $sod = "";
}
$sql_order = " order by $sst $sod ";
if ($sca || $stx){
    $sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
}
else{
    $sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}
$result = sql_query($sql);
$list = array();
$i = 0;
if (!$sca && !$stx){
    $arr_notice = split("\n", trim($board[bo_notice]));
    for ($k=0; $k<count($arr_notice); $k++){
        $row = sql_fetch(" select * from $write_table where wr_id = '$arr_notice[$k]' ");
        if (!$row[wr_id])
        continue;
        $list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);
        $list[$i][is_notice] = true;
        $i++;
    }
}
$k = 0;
while ($row = sql_fetch_array($result)){
    // 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
    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]);
    if (strstr($sfl, "subject"))
        $list[$i][subject] = search_font($stx, $list[$i][subject]);
        $list[$i][is_notice] = false;
        $list[$i][num] = $total_count - ($page - 1) * $board[bo_page_rows] - $k;
    $i++;
    $k++;
}
$write_pages = get_paging($config[cf_write_pages], $page, $total_page, "./board.php?bo_table=$bo_table" . $qstr . "&page=");
//############################## 목록 및 내부검색 제어 끝 - 2006년 9월 1일 금요일 플록
//분류내 재정렬시 분류유지
$qstr2= str_replace("bo_table=$bo_table","bo_table=$bo_table&sca=$sca&page=$page",$qstr2);
?>
위 소스를 적용했습니다.
 
 
 
전체 게시물에서는 아무 이상없이 검색이 됩니다만..
./board.php?bo_table=site&sca=aaa 여기에서는 어떠한 검색어를 넣든 카테고리에 포함된 리스트가 전부 뜨네요.
 
 
list.skin.php를 어찌 수정해야할까요?
도움의 손길좀~~ ㅠㅁㅠ
 
 
사이트 주소가 필요하시면 댓글이나 쪽지 주세요.

댓글 전체

./board.php?bo_table=site&sca=aaa 여기에서는 어떠한 검색어를 넣든 카테고리에 포함된 리스트가 전부 뜨네요.

-->> sca 가 존재한 상태에서 검색을 하시면 안되구요..  약간의 list.php 를 수정하셔야 해요.

g4/bbs/list.php 에서 약간의 편법을 써야 합니다.

20줄에...

-----------------------------------
// 분류 선택 또는 검색어가 있다면
if ($sca || $stx)
{
  //추가
  if($bo_table == 'test' and $stx)
              $sca  = ''; // test 테이블에서 검색어를 입력한 경우 $sca 는 무시한다..



}
----------------------------------
즉... 그누보드는  sca 값이 있는 상태에서 검색어를 입력하면  해당 sca 내에서만 검색을 합니다.  sca 내에서 검색을 할경우는  sca 를 초기화........
뮤죤님 답변 감사합니다.
허나..
./board.php?bo_table=site&sca=aaa 여기에서는 어떠한 검색어를 넣든 카테고리에 포함된 리스트가 전부 뜨네요.
이말은 그누보드 기능인 카테고리내 검색기능이 안된다는 말이었습니다.
어떠한 검색어를 넣든 aaa에 포함된 모든 리스트가 뜨거든요. 즉, 검색자체가 되지 않아요...;
sca를 초기화 시켜버리면.. 원하는 결과와는 다른 결과가 나와버리네요.. ㅠㅁㅠ
전체 51 |RSS
그누4 질문답변 내용 검색

회원로그인

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