PHP로 페이지 만들기(메모)
카탈로그
페이지 스타일
페이지 스타일은 일본어로 페이지 보내기 페이지 할당이라고 불리는 기능으로, 디스플레이에 용량이 많은 내용을 분할하는 데 사용된다.
블로그나 모바일 앱에서는'<<<<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">«</a>
<?php else : ;?>
<span class="first_last_page">«</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">»</a>
<?php else : ?>
<span class="first_last_page">»</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
끝맺다
만약 틀렸다면 반드시 지적해 주십시오.
보기에는 간단하지만 생각은 어렵다.
Reference
이 문제에 관하여(PHP로 페이지 만들기(메모)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/okkun510/articles/c987b8d66fa3eae6b132텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)