PHP로 페이지 만들기(메모)

28470 단어 PHPtech

카탈로그

  • 호출(페이지 문자)
  • 완성도
  • 제작'되돌아오기'
  • 페이지 번호 만들기
  • '전진'제작
  • 제○건
  • 으로 표시
  • 종료
  • 페이지 스타일


    페이지 스타일은 일본어로 페이지 보내기 페이지 할당이라고 불리는 기능으로, 디스플레이에 용량이 많은 내용을 분할하는 데 사용된다.
    블로그나 모바일 앱에서는'<<<<1, 2, 3, 45>>'이라는 문구가 자주 보인다.
    그건 편하지만 혼자 하기에는 귀찮아서 메모 형식으로 썼어요.
    대체로 움직였는데 뭔가 잘못되거나 더 그래야 할 게 있으면 알려주세요.

    완성도


    이런 느낌이에요.

    << 또는 >> 키를 눌러 다음 페이지로 이동하거나 이전 페이지로 돌아갑니다.
    지금은 1페이지이기 때문에'<<'는 옅은 회색으로 변해 클릭할 수 없습니다.

    현재 페이지를 포함한 5개의 숫자가 항상 배열됩니다.
    숫자를 클릭하면 그 숫자의 페이지로 날아간다.
    연회색을 배경으로 한 숫자는 현재 페이지입니다.현재 페이지를 클릭할 수 없습니다.

    마지막 페이지가 되면 ">>"은 연한 색으로 변하여 클릭할 수 없습니다.
    현재 80개의 로그인 데이터가 있기 때문에'80건 중 76~80건 표시'로 바뀌었고, 79건이라면'76~79건 표시'로 바뀌었다.
    [뒤로] [앞으로] [페이지 번호] 일반 코드
    index_controller.php
    //SQL文を変数にいれる。$count_sqlはデータの件数取得に使うための変数。
    $count_sql = 'SELECT COUNT(*) as cnt FROM テーブル名';
    
    //ページ数を取得する。GETでページが渡ってこなかった時(最初のページ)のときは$pageに1を格納する。
    if(isset($_GET['page']) && is_numeric($_GET['page'])) {
      $page = $_GET['page'];
    } else {
      $page = 1;
    }
    
    //最大ページ数を取得する。
    //5件ずつ表示させているので、$count['cnt']に入っている件数を5で割って小数点は切りあげると最大ページ数になる。
    $counts = $database -> query($count_sql);
    $count = $counts -> fetch(PDO::FETCH_ASSOC);
    $max_page = ceil($count['cnt'] / 5);
    

    복귀 만들기


    index.php
    <div class="pagination">
    <?php if ($page >= 2): ?>
                <a href="index.php?page=<?php echo($page - 1); ?>" class="page_feed">&laquo;</a>
            <?php else : ;?>
                <span class="first_last_page">&laquo;</span>
            <?php endif; ?>
    
    현재 페이지가 2페이지를 초과하면 되돌아오는 링크를 추가합니다.그렇지 않으면 링크가 추가되지 않습니다.
    '되돌아오기' 때문에 현재 페이지 ($page) 에서 1을 빼십시오.
    css는 이런 느낌입니다.flex로 가로로 배열하다
    stylesheet.css
    a:link {text-decoration:none }
    a.page_number:visited {color: black; text-decoration:none }
    .pagination {
      display: flex;
      justify-content: center;
      margin: 15px;
    }
    .page_feed {
      width: 30px;
      margin: 0 10px;
      padding: 5px 10px;
      text-align: center;
      background: #b8b8b8;
      color: black;
    }
    .first_last_page {
      width: 30px;
      margin: 0 10px;
      padding: 5px 10px;
      text-align: center;
      background: #f0f0f0;
      color: black;
    }
    

    페이지 번호 만들기


    index_controller.php
    if($page == 1 || $page == $max_page) {
        $range = 4;
    } elseif ($page == 2 || $page == $max_page - 1) {
        $range = 3;
    } else {
        $range = 2;
    }
    
    $range 는 표시할 페이지 영역을 지정하는 데 사용됩니다.
    index.php
    <?php for ($i = 1; $i <= $max_page; $i++) : ?>
       <?php if($i >= $page - $range && $i <= $page + $range) : ?>
           <?php if($i == $page) : ?>
               <span class="now_page_number"><?php echo $i; ?></span>
           <?php else: ?>
               <a href="?page=<?php echo $i; ?>" class="page_number"><?php echo $i; ?></a>
           <?php endif; ?>
       <?php endif; ?>
    <?php endfor; ?>
    
    for 순환을 사용하여 페이지 번호를 만듭니다.1에서 최대 페이지 수.
    현재 페이지와 페이지 번호를 동시에 클릭할 수 없습니다.
    CSS는 이런 느낌이에요.
    stylesheet.css
    a:link {text-decoration:none }
    a.page_number:visited {color: black; text-decoration:none }
    .page_number {
      width: 30px;
      margin: 0 10px;
      padding: 5px;
      text-align: center;
      background: #b8b8b8;
      color: black;
    }
    .now_page_number {
      width: 30px;
      margin: 0 10px;
      padding: 5px;
      text-align: center;
      background: #f0f0f0;
      color: black;
      font-weight: bold;
    }
    

    "전진"을 창조하다


    index.php
        <?php if($page < $max_page) : ?>
            <a href="index.php?page=<?php echo($page + 1); ?>" class="page_feed">&raquo;</a>
        <?php else : ?>
            <span class="first_last_page">&raquo;</span>
        <?php endif; ?>
    </div>
    
    "전진"이기 때문에 현재 페이지 수가 1을 추가합니다.
    현재 페이지가 최대 페이지 수를 초과하면 '전진' 을 클릭할 수 없습니다.

    ○ 제○건으로 표시하기


    index.php
    <p class="from_to"><?php echo $count['cnt']; ?>件中 <?php echo $from_record; ?> - <?php echo $to_record;?> 件目を表示</p>
    
    index_controller.php
    $from_record = ($page - 1) * 5 + 1;
    
    if($page == $max_page && $count['cnt'] % 5 !== 0) {
        $to_record = ($page - 1) * 5 + $count['cnt'] % 5;
    } else {
        $to_record = $page * 5;
    }
    
    $count['cnt']로 모든 건수를 얻습니다.
    음반당 5장씩 나오기 때문에 ○-△건 나와야 한다
    페이지 수


    page1
    1
    5
    page2
    6
    10
    page3
    11
    15
    page4
    16
    20
    ○(현재 페이지-1)*5+1에 표시 가능
    △ 현재 페이지는 5를 곱하면 표시될 수 있다.
    그런데 이렇게 되면 데이터가 78개에 불과한데 76-80개가 돼서 이상해진 거예요.
    이 경우 현재 페이지에서 1곱하기 5의 숫자를 빼고 전체 부품 수를 5로 나누면 정확한 숫자가 나타난다
    (예)최대 건수가 18건일 경우 18은 4쪽(4-1)*5 = 15 더하기 18% 5 = 3은 18

    끝맺다


    만약 틀렸다면 반드시 지적해 주십시오.
    보기에는 간단하지만 생각은 어렵다.

    좋은 웹페이지 즐겨찾기