게시판 리스트에서 각 항목별로 소트 적용하는 방법

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
게시판 리스트에서 각 항목별로 소트 적용하는 방법

QA

게시판 리스트에서 각 항목별로 소트 적용하는 방법

본문

게시판 리스트에서 리스트 부분에 wr_1 을 불러내고, 항목명을 아래와 같이 적용하면

오름차순 정렬은 실행되는데, 한번 정렬하고 나면 아무 동작을 하지 않네요.

항목명 옆에 ▲▼ 을 넣어서, 클릭시 오름차순과 내림차순으로 정렬될 수 있게 하려면

아래 코드를 어떻게 수정해야 할까요?

 

<th width="12%" scope="col"><?php echo subject_sort_link('wr_1', $qstr2, 1) ?>지역코드</a></th>

 

 

※ 추가질문

정렬하려는 대상이 문자가 아니라 숫자인 경우 (ex. wr_4 총매출) 숫자로 오름차순, 내림차순 정렬이 되게 하려면 어떻게 하면 될까요?

 

도움 부탁 드립니다. 

감사합니다.

이 질문에 댓글 쓰기 :

답변 2

board.php는 데이터 로직을 처리하고, list.skin.php는 UI를 렌더링(최신 그누 기준)

 

※ 정렬 상태의 토글 기능 구현 ;

항목명 옆에 ▲▼를 추가하여 사용자가 해당 항목명을 클릭했을 때,

오름차순과 내림차순 정렬이 번갈아가며 실행될 수 있도록 코드를 수정

※ 숫자 데이터를 올바르게 정렬하는 방법 ;

정렬하려는 데이터가 문자형이 아닌 숫자인 경우,

이를 기반으로 오름차순 및 내림차순 정렬이 정확히 작동하도록 설정하는 방법.

예를 들어, wr_4 컬럼이 총매출(숫자) 데이터를 가지고 있다면,

이를 숫자형으로 인식하여 올바른 정렬을 구현.

 

*board.php, 정렬 조건을 파라미터로 받도록 설정


// 기존 정렬 파라미터
$sort_field = isset($_GET['sort']) ? $_GET['sort'] : 'wr_datetime';
$sort_order = isset($_GET['order']) ? $_GET['order'] : 'desc';
// 보안 처리
$allowed_fields = ['wr_1', 'wr_2', 'wr_4', 'wr_datetime'];
if (!in_array($sort_field, $allowed_fields)) {
    $sort_field = 'wr_datetime';
}
if (!in_array(strtolower($sort_order), ['asc', 'desc'])) {
    $sort_order = 'desc';
}
// 쿼리 수정
$sql = "SELECT * FROM {$g5['write_table']} 
        WHERE wr_is_comment = 0 
        ORDER BY {$sort_field} {$sort_order}";
$result = sql_query($sql);

 

*list.skin.php, 각 항목에 정렬 버튼 및 상태 표시를 추가


<th>
    <?php
    $order = ($sort_field == 'wr_1' && $sort_order == 'asc') ? 'desc' : 'asc';
    ?>
    <a href="?sort=wr_1&order=<?= $order ?>">
        지역코드 <?= ($sort_field == 'wr_1' ? ($sort_order == 'asc' ? '▲' : '▼') : '') ?>
    </a>
</th>
<th>
    <?php
    $order = ($sort_field == 'wr_4' && $sort_order == 'asc') ? 'desc' : 'asc';
    ?>
    <a href="?sort=wr_4&order=<?= $order ?>">
        총매출 <?= ($sort_field == 'wr_4' ? ($sort_order == 'asc' ? '▲' : '▼') : '') ?>
    </a>
</th>

 

*숫자 정렬의 경우 SQL에서 별도의 캐스팅 처리를 할 수 있음


ORDER BY CAST(wr_4 AS UNSIGNED) ASC

<th width="12%" scope="col">지역코드<?php if($sst == "wr_1" && $sod=='asc')  echo subject_sort_link('wr_1','','desc').'▼</a>'; else echo subject_sort_link('wr_1').'▲</a>'; ?></th>
답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT