소수점때매인지 정렬이 제대로 되지않습니다.
본문
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
정렬하려는 컬럼이 문자형이라서 그런것입니다. 숫자형으로 바꿔서 정렬해보세요.
기존 여분필드의경우 데이터유형이 VARCHAR 문자열이라서 그렇습니다
소수점으로 정렬을 원하실경우 데이터유형을 지정해주셔야합니다
소수형 데이터 타입은 FLOAT로 해당 컬럼 데이터유형을 FLOAT로 변경해주셔야 소수점을 정상적으로 인지하고 해당 숫자순서대로 정렬을 가능하게 할것입니다