테스트 사이트 - 개발 중인 베타 버전입니다

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

넬류어드 6년 전 조회 4,135

</strong></p>

<p>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</p>

<p><strong>

 

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

 

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

 

 

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

 

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

 

 

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

 

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
6년 전
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

넬류어드

자답입니다.

 

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.=" ";

    }

}</p>

<p>

 

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

 

</p>

<p>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']}' ");</p>

<p>        $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;</p>

<p>        $i++;

        $k++;

    }</p>

<p>

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

 

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인