1. 이전글 document_srl 가져오기
@php $document_srl = Context::get('document_srl'); $module_srl = $module_info->module_srl; //Context::get('module_srl') exit(var_dump($module_srl)); $oDB = DB::getInstance(); // 이전글 조회 $prev_query = "SELECT * FROM documents WHERE module_srl = ? AND document_srl < ? ORDER BY document_srl DESC LIMIT 1"; $stmt = $oDB->query($prev_query, [$module_srl, $document_srl]); $prev_document = $stmt->fetch(); exit(var_dump($prev_document->document_srl)); @endphp
2. list_order, update_order가 음수로 되어있음.
@php $document_srl = Context::get('document_srl'); $module_srl = $module_info->module_srl; $oDB = DB::getInstance(); // order_target이 list_order인지 update_order인지 확인 $order_target = $module_info->order_target; // list_order, update_order // 현재 글의 절대값 order_target 필드 값 가져오기 $current_query = "SELECT ABS($order_target) AS abs_order FROM documents WHERE document_srl = ?"; $stmt = $oDB->query($current_query, [$document_srl]); // 현재 order_target 값 가져오기 $current_order = $stmt->fetchAll(PDO::FETCH_ASSOC)[0]['abs_order']; // 첫 번째 행의 abs_order 값 가져오기 // 이전글 조회 $prev_query = "SELECT * FROM documents WHERE module_srl = ? AND ABS($order_target) < ? ORDER BY ABS($order_target) DESC LIMIT 1"; $stmt = $oDB->query($prev_query, [$module_srl, $current_order]); // fetchAll()로 이전글을 가져오기 $prev_documents = $stmt->fetchAll(PDO::FETCH_ASSOC); // 이전글을 가져오기 $prev_document = $prev_documents ? $prev_documents[0] : null; $prev_title = $prev_document['title']; $prev_document = $prev_document['document_srl']; // 이전글번호 //echo $prev_document; // 다음글 조회 (수정된 부분) $next_query = "SELECT * FROM documents WHERE module_srl = ? AND ABS($order_target) > ? ORDER BY ABS($order_target) ASC LIMIT 1"; // 오름차순으로 수정 $stmt = $oDB->query($next_query, [$module_srl, $current_order]); // fetchAll()로 다음글을 가져오기 $next_documents = $stmt->fetchAll(PDO::FETCH_ASSOC); // 다음글을 가져오기 $next_document = $next_documents ? $next_documents[0] : null; $next_title = $next_document['title']; $next_document = $next_document['document_srl']; // 다음글번호 //echo $next_document; @endphp <div style="display:flex;justify-content: space-between"> <a id="prevPost" href="@url('document_srl',$prev_document)">이전글({$prev_title})</a> <a href="@url('document_srl',$document_srl)">현재글({$oDocument->getTitle()}})</a> <a id="nextPost" href="@url('document_srl',$next_document)">다음글({$next_title})</a> </div> <script> document.addEventListener("keydown", function (event) { if (event.key === "ArrowLeft") { // 왼쪽 화살표 키 let prevLink = document.getElementById("prevPost"); if (prevLink && prevLink.href) { window.location.href = prevLink.href; } } else if (event.key === "ArrowRight") { // 오른쪽 화살표 키 let nextLink = document.getElementById("nextPost"); if (nextLink && nextLink.href) { window.location.href = nextLink.href; } } }); </script>
3. 통합게시판은 위 소스가 안 먹음. 왜냐하면 게시판별로 순서를 가져오기 때문에.
order_target이 list_order인지 update_order인지는 넣어뒀음.