정렬식을 추가했더니 이상현상이 발생합니다...

정렬식을 추가했더니 이상현상이 발생합니다...

QA

정렬식을 추가했더니 이상현상이 발생합니다...

본문


select * from g5_write_mainpost where wr_is_comment = 0 order by case when wr_1 like '%1%' then 1 else 2 end, case when wr_1 like '%4%' then 1 else 2 end, case when wr_1 like '%7%' then 1 else 2 end limit 0, 14

 

list.php에서 $sql_order를 수정하여 order by 문을 추가하였습니다.

 

해당 쿼리문을 phpMyAdmin에서 직접 쿼리를 날리면 문제없이 잘 동작하는걸 확인할 수 있었습니다.

 

1982463138_1547696174.7292.png

 

해당 이미지처럼 14개의 값이 정상적으로 출력됩니다.

 

그런데 게시판을 거쳐버리니 문제가 발생합니다.

 

1982463138_1547696217.6682.png

 

3개 정도 게시물의 값을 받아오지 못하는 구간이 발생합니다. 저 3개는 phpMyAdmin에서 출력된 값중 밑에서 3개까지인것으로 보입니다.

 

 

제가 어딘가에서 놓치고 있는 부분이 있는 것인지, 쿼리문 자체가 잘못된 것인지.. 도움이 필요합니다. 

이 질문에 댓글 쓰기 :

답변 2

자답입니다.

 


if($bo_table=="mainpost")
{
    $qcase = explode(",", $member['mb_5']);
    if(count($qcase) > 0)
    {
        $sql_order = " order by ";
        
        for($i=0;$i< count($qcase);$i++)
        {
            if($i==0)
            {
                $sql_order.=("case when wr_1 like '%".$qcase[$i]."%' then 1 else 2 end");
            }
            else
            {
                $sql_order.=(", case when wr_1 like '%".$qcase[$i]."%' then 1 else 2 end");
            }
        }
        $sql_order.=" ";
    }
}

 

list.php에서 $sql_order 변수에 sql을 집어넣는 구간에서 $i를 이용해서 for문을 돌리는 바람에

 


while ($row = sql_fetch_array($result))
    {
        // 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
        if ($is_search_bbs)
            $row = sql_fetch(" select * from {$write_table} where wr_id = '{$row['wr_parent']}' ");
        $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
        if (strstr($sfl, 'subject')) {
            $list[$i]['subject'] = search_font($stx, $list[$i]['subject']);
        }
        $list[$i]['is_notice'] = false;
        $list_num = $total_count - ($page - 1) * $list_page_rows - $notice_count;
        $list[$i]['num'] = $list_num - $k;
        $i++;
        $k++;
    }

이 부분에서 문제가 생겼었습니다 ㅡㅡ;

 

while위에 $i = 0; 를 붙여주는것으로 해결되었습니다.

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

회원로그인

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