반응형
    
    
    
  js로 page 정보를 표시합니다.
페이지 api는 아래 참조
https://web.todaycoding.com/entry/PHP-list-api-paging-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0
PHP list api paging 구현하기
조회 api에서 paging 구현하기예) 주문(order) 조회 페이지 번호가 없으면 1로 설정하고페이지당 아이템 수를 5로 설정하여오프셋을 계산$page = isset($_POST['page']) ? intval($_POST['page']) : 1;$items_per_page = 5
web.todaycoding.com
주문 정보 조회
const page = 1;
$.ajax({
  url: '/api_order.php',
  method: 'POST',
  data: {
    page: page,
  },
  dataType: 'json',
  success: function(response) {
    const order_info = response.data;
    updatePagination(order_info.pagination);
  },
  error: function() {
    alert('Failed to load data.');
  }
});
페이지 표시 영역
<div class="pagenation"></div>
페이지 링크 생성
function updatePagination(pagination) {
  const paginationContainers = document.querySelectorAll('.pagenation');
  paginationContainers.forEach(paginationContainer => {
      paginationContainer.innerHTML = ''; // 페이지 영역 초기화
      const createPageButton = (page, label, disabled = false) => {
          const pageDiv = document.createElement('div');
          pageDiv.className = `page page_btn ${disabled ? 'disabled' : ''} ${pagination.current_page === page ? 'active' : ''}`;
          const urlParams = new URLSearchParams(window.location.search);
          urlParams.set('page', page);
          const newUrl = `?${urlParams.toString()}`;
          const link = document.createElement('a');
          link.href = newUrl;
          link.className = 'link';
          link.textContent = label || page;
          pageDiv.appendChild(link);
          return pageDiv;
      };
      // 맨 앞으로 가기
      paginationContainer.appendChild(createPageButton(1, '<<', pagination.current_page === 1));
      // 이전 페이지로 가기
      if (pagination.current_page > 1) {
          paginationContainer.appendChild(createPageButton(pagination.current_page - 1, '<'));
      } else {
          paginationContainer.appendChild(createPageButton(1, '<', true));
      }
      // Page numbers
      const pagesPerGroup = 10;
      const startPage = Math.floor((pagination.current_page - 1) / pagesPerGroup) * pagesPerGroup + 1;
      const endPage = Math.min(startPage + pagesPerGroup - 1, pagination.total_pages);
      for (let i = startPage; i <= endPage; i++) {
          paginationContainer.appendChild(createPageButton(i, i, pagination.current_page === i));
      }
      // 다음 페이지로
      if (pagination.current_page < pagination.total_pages) {
          paginationContainer.appendChild(createPageButton(pagination.current_page + 1, '>'));
      } else {
          paginationContainer.appendChild(createPageButton(pagination.total_pages, '>', true));
      }
      // 맨 뒤로 가기
      paginationContainer.appendChild(createPageButton(pagination.total_pages, '>>', pagination.current_page === pagination.total_pages));
  });
}반응형
    
    
    
  'web' 카테고리의 다른 글
| MySQL Workbench 임시로 안전 모드 해제 (1) | 2025.05.23 | 
|---|---|
| PHP list api paging 구현하기 (0) | 2024.10.09 | 
| [ERROR] Got error 176 "Read page with wrong checksum" from storage engine Aria (0) | 2023.08.13 | 
| [크롬] 캐시 비활성화 (0) | 2023.05.17 | 
| web tts (0) | 2023.05.15 | 
										
									
										
									
댓글