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

테이블 컬럼(int)값 정렬 문제 채택완료

vanvipa 7년 전 조회 3,416

item과 inventory라는 테이블의 첫번째 컬럼(it_id) 순서대로 정렬되는 리스트 페이지를 사용중인데 (게임의 인벤토리같은 느낌의 페이지입니다.)

컬럼의 종류가 int라서 그런지 정렬에 문제가 생깁니다ㅜㅜ

 

1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9

까지 한자릿수 레코드는 별 이상없이 정렬되지만 10 이상이 추가되면

 

10 / 11 ... / 1 / 20 / 21 .... / 2 / 3 .... 

이런 식으로 숫자가 밀리는 문제가 생기는데.. 

db나 코드를 어떤식으로 수정해야할지 아시는 분의 도움을 구합니다 ㅠㅠ

 

리스트 페이지의 코드는 아래와 같습니다.

</p>

<p><?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 

$pin = null;

$p_count = 0;</p>

<p> </p>

<p>// 개인 아이템

$pe_inven_sql = "select *, count(*) as cnt from {$g5['inventory_table']} inven, {$g5['item_table']} item where inven.user_id = '$user_id' and item.it_id = inven.it_id and inven.se_user_id = '' group by inven.it_id order by inven.it_id asc";

$pe_inven_result = sql_query($pe_inven_sql);

for($i; $row=sql_fetch_array($pe_inven_result); $i++) {

    $pin[$p_count] = $row;

    $p_count++;

}

$i = 0;

?></p>

<p><ul class="inventory-list">

<? 

for($i=0; $i < count($pin); $i++) { ?>

    <li class="box-line bak">

<? if($pin[$i][in_id]){ ?>

        <a href="#<?=$pin[$i][in_id]?>" class="inven-open-popup" data-idx="<?=$pin[$i][in_id]?>" data-type="">

            <img src="<?=$pin[$i][it_img]?>" />

        </a>

<? } ?>

    </li>

<? } </p>

<p>if($i == 0) { 

?>

    <li class="no-data">

        보유중인 아이템이 없습니다.

    </li>

<? } ?>

</ul></p>

<p>

 

 

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

답변 2개

채택된 답변
+20 포인트

칼럼 타입이 int로 되어 있으면 그런 문제 없지 않나요?

char, varchar 이런 경우에 그런 문제가 발생하는 걸로 알고 있습니다.

 

order by order by (inven.it_id + 1) asc

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

답변에 대한 댓글 1개

v
vanvipa
7년 전
도움 주셔서 감사합니다! 답변주신 방법으로 수정하니 해결되었습니다 ㅠㅠ!

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

7년 전

it_id 칼럼의 데이터 타입은 varchar 이고, 실제들어가는 데이터가 숫자형인 경우,

현재는 varchar (문자)로 정렬처리되어 생기는 문제입니다.

 

쿼리를 다음과 같이 수정하는 방법이 있습니다. 

order by inven.it_id asc -> order by abs(inven.it_id) asc

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

답변에 대한 댓글 1개

v
vanvipa
7년 전
쿼리 수정에 도움 주셔서 감사합니다!! 윗분이 알려주신 방법도, 트샷님이 알려주신 방법도 사용해보니 둘 다 말끔하게 처리됩니다! 답변 채택은 하나밖에 할 수 없어서 리플을 먼저 달아주신분께 드렸지만 두분께 모두 감사드립니다! ㅠㅠ!

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

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

로그인