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

소수점때매인지 정렬이 제대로 되지않습니다. 채택완료

서포터즈 5년 전 조회 2,661

http://iconoptics.edenstore.co.kr/bbs/board.php?bo_table=board_gallery

 

 

fov 정렬을하게되면

 

12

12

123.1

13.7

 

이렇게 정렬되는것을 확인할수가있습니다.

 

정렬이 숫자별로...정렬이되는거같습니다 오름차순 내림차순이아니라

 

이게 1페이지입니다. 2페이지로넘어가서 다시 정렬하면

 

 

18.4 다음에 2가옵니다.

 

어떤식으로 정렬되는지는 대충 알겠는데 왜 이런현상이 일어나는지모르겠습니다 애초에 2가있으면 1페이지에서 1다음에 2가나와야하는데 123이라고 나왔던 수는 마지막으로 가야할거같은데 말이죠.

 

 

list.skin.php 소스입니다.

 

 

 

<div style="width:150px; float:left;margin-top:-20px;margin-left:20px;">
                            <label style="float:left;height:20px;margin-left:30px;font-size:1.1em; font-weight:bold; line-height:20px; text-indent:10px;">전체 검색</label>
                            <input type="hidden" name="sfl" value="wr_subject||wr_1||wr_2||wr_3||wr_4||wr_5||wr_6||wr_7||wr_8||wr_9||wr_10||wr_11||wr_12||wr_13||wr_14||wr_15||wr_16">
                            <input type="hidden" name="sop" value="and">
                            <label for="sch_stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
                            <input type="text" name="stx" id="sch_stx" maxlength="20" value="<? if($_GET['stx']) { echo $_GET['stx']; }?>"style="float:left;margin-left:11px;matgin-top:50px;height:26px;border:1px solid #dcdcdc;border-radius:5px;color:#000;line-height:2em">    
                        </div>
                        
                        <div style="width:150px;float:left;margin-left:20px;">
                            <select name="sst" id="sst"name="sst" style="width:130px;cursor: pointer;border: 1px solid #dcdcdc; color: #8a8a8a; border-radius: 5px; text-indent: 5px; height: 28px;">
                               <option value="">정렬</option>
                               <? $s_arr = array("wr_1,asc"=>"magnification 오름차순", 
                                                             "wr_1,desc"=>"magnification 내림차순",
                                                             "wr_4,asc"=>"working distance 오름차순",
                                                             "wr_4,desc"=>"working distance 내름차순",
                                                             "wr_2,asc"=>"image size 오름차순",
                                                             "wr_2,desc"=>"image size 내림차순",
                                                             "wr_3,asc"=>"field of view 오름차순",
                                                             "wr_3,desc"=>"field of view 내림차순"
                                                            );
                               foreach($s_arr as $key => $value) {
                                  $sel = $_GET['sst'] == $key ? " selected" : "";
                                  echo "<option value='".$key."'".$sel.">".$value."</option>";          
                               }?>
                            </select>
                        </div>
                        
                        
                        <script  type="text/javascript">
                            $("#wr_1a").val('<?if(strlen($_GET[wr_1]) == 0 && strlen($_GET[wr_1]) > 0){echo $_GET[wr_1];}else{echo $_GET[wr_1];}?>');
                            $("#wr_4").val('<?if(strlen($_GET[wr_4]) == 0 && strlen($_GET[wr_4]) > 0){echo $_GET[wr_4];}else{echo $_GET[wr_4];}?>');
                            $("#wr_2").val('<?if(strlen($_GET[wr_2]) == 0 && strlen($_GET[wr_2]) > 0){echo $_GET[wr_2];}else{echo $_GET[wr_2];}?>');    
                            $("#wr_3").val('<?if(strlen($_GET[wr_3]) == 0 && strlen($_GET[wr_3]) > 0){echo $_GET[wr_3];}else{echo $_GET[wr_3];}?>');    
                            $("#sfl2").val('<?if(strlen($_GET[sfl2]) == 0 && strlen($_GET[sfl2]) > 0){echo $_GET[sfl2];}else{echo $_GET[sfl2];}?>');
                            $('#sfl').fancySelect();
                        </script>
                        <input type="submit" value="검색" class="btn_submit" style="float:right;margin-top:-5px;">            

 

 

 

 

 

셀렉트 박스부분 소스이면 현재 wr_3이 문제인거같습니다.

 

 

 

 

list.php 소스입니다.

 

 

if (!$sst) {
    if ($board['bo_sort_field']) {
        $sst = $board['bo_sort_field'];
    } else {
        $sst  = "wr_num, wr_reply";
        $sod = "";
    }
} else {
    // 게시물 리스트의 정렬 대상 필드가 아니라면 공백으로 (nasca 님 09.06.16)
    // 리스트에서 다른 필드로 정렬을 하려면 아래의 코드에 해당 필드를 추가하세요.  
    // $sst = preg_match("/^(wr_subject|wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
    $sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood|wr_1|wr_4|wr_2|wr_3)$/i", $sst) ? $sst : "";
}

if(!$sst)
    $sst  = "wr_num, wr_reply";

if ($sst) {
//    $sql_order = " order by {$sst} {$sod}, wr_4 asc, wr_2 ASC ";
    if($bo_table=="board_gallery"){
        $sql_order = " order by {$sst} {$sod}";
    }else{
        $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}, $page_rows ";
} else {
    $sql = " select * from {$write_table} where wr_is_comment = 0 ";
    if(!empty($notice_array))
        $sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
    $sql .= " {$sql_order} limit {$from_record}, $page_rows ";
}

 

 

 

 

더필요한 소스가있으면... 바로 올려드리겠습니다 해결하고싶네요

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

답변 2개

채택된 답변
+20 포인트
d
5년 전

정렬하려는 컬럼이 문자형이라서 그런것입니다. 숫자형으로 바꿔서 정렬해보세요.

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

답변에 대한 댓글 1개

서포터즈
5년 전
db에서 자체적으로 wr_3값을 float형식으로 바꿔도 괜찮나요 ?

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

Policia
5년 전

기존 여분필드의경우 데이터유형이 VARCHAR 문자열이라서 그렇습니다

소수점으로 정렬을 원하실경우 데이터유형을 지정해주셔야합니다

소수형 데이터 타입은 FLOAT로 해당 컬럼 데이터유형을 FLOAT로 변경해주셔야 소수점을 정상적으로 인지하고 해당 숫자순서대로 정렬을 가능하게 할것입니다

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

답변에 대한 댓글 1개

서포터즈
5년 전
해결되었습니다 감사합니다 !

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

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

로그인