정렬식을 추가했더니 이상현상이 발생합니다...
본문
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에서 직접 쿼리를 날리면 문제없이 잘 동작하는걸 확인할 수 있었습니다.
해당 이미지처럼 14개의 값이 정상적으로 출력됩니다.
그런데 게시판을 거쳐버리니 문제가 발생합니다.
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; 를 붙여주는것으로 해결되었습니다.
!-->!-->
답변을 작성하시기 전에 로그인 해주세요.