<?php
$conn = mysqli_connect("localhost", "hpeeragetest", "gksksla1225!", "hpeeragetest_godohosting_com");
?>
<!doctype html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="color.html"></script>
<meta charset="UTF-8">
<title>게시판</title>
<link rel="stylesheet" type="text/css" href="css/paging.css">
</head>
<body>
<input type="button" value="night"
onclick="
nightDayHandler(this);">
<hr>
<div id="board_area">
<h1>자유게시판</h1>
<h4>자유롭게 글을 쓸 수 있는 게시판입니다.</h4>
<table class="list-table" border=1>
<thead>
<tr>
<th width="70">번호</th>
<th width="500">제목</th>
</tr>
</thead>
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}
$sql = "select * from aboard";
$result = mysqli_query($conn, $sql);
$row_num = mysqli_num_rows($result); // 게시판 총 레코드 수
$list = 5; // 한 페이지에 보여줄 개수
$block_ct = 5; // 블록당 보여줄 페이지 개수
$block_num = ceil($page / $block_ct); // 현재 페이지 블록 구하기
$block_start = (($block_num - 1) * $block_ct) + 1; // 블록의 시작번호
$block_end = $block_start + $block_ct - 1; // 블록 마지막 번호
$total_page = ceil($row_num / $list); // 페이징할 페이지 수 구하기
if ($block_end > $total_page)
$block_end = $total_page; // 만약 블록의 마지박 번호가 페이지수보다 많다면 마지박번호는 페이지 수
$total_block = ceil($total_page / $block_ct); // 블럭 총 개수
$start_num = ($page - 1) * $list; // 시작번호 (page-1)에서 $list를 곱한다.
$sql2 = "SELECT * FROM aboard ORDER BY nid DESC LIMIT $start_num, $list";
$result2 = mysqli_query($conn, $sql2);
while ($board = $result2->fetch_array()) {
$title = $board["ntitle"];
if (strlen($title) > 30) // 글자가 30 이상이라면 ..으로 변환
{
$title = str_replace($board["ntitle"], mb_substr($board["ntitle"], 0, 30, "utf-8") . "...", $board["ntitle"]);
}
// $sql3 = mq("select * from reply where con_num='".$board['idx']."'");
// $rep_count = mysqli_num_rows($sql3);
// 답변수 출력
?>
<tbody>
<tr>
<td width="70"><?php echo $board['nid']; ?></td>
<td width="500"><a
href='/page/board/read.php?nid=<?php echo $board["nid"]; ?>'><?php echo $title; ?><span>[<?php echo $rep_count; ?>]</span></a></td>
</tr>
</tbody>
<?php } ?>
</table>
<!---페이징 넘버 --->
<div id="page_num">
<ul>
<?php
if ($page <= 1) { // 만약 page가 1보다 크거나 같다면
echo "<li class='fo_re'>처음</li>"; // 처음이라는 글자에 빨간색 표시
} else {
echo "<li><a href='?page=1'>처음</a></li>"; // 알니라면 처음글자에 1번페이지로 갈 수있게 링크
}
if ($page <= 1) { // 만약 page가 1보다 크거나 같다면 빈값
} else {
$pre = $page - 1; // pre변수에 page-1을 해준다 만약 현재 페이지가 3인데 이전버튼을 누르면 2번페이지로 갈 수 있게 함
echo "<li><a href='?page=$pre'>이전</a></li>"; // 이전글자에 pre변수를 링크한다. 이러면 이전버튼을 누를때마다 현재 페이지에서 -1하게 된다.
}
for ($i = $block_start; $i <= $block_end; $i ++) {
// for문 반복문을 사용하여, 초기값을 블록의 시작번호를 조건으로 블록시작번호가 마지박블록보다 작거나 같을 때까지 $i를 반복시킨다
if ($page == $i) { // 만약 page가 $i와 같다면
echo "<li class='fo_re'>[$i]</li>"; // 현재 페이지에 해당하는 번호에 굵은 빨간색을 적용한다
} else {
echo "<li><a href='?page=$i'>[$i]</a></li>"; // 아니라면 $i
}
}
if ($block_num >= $total_block) { // 만약 현재 블록이 블록 총개수보다 크거나 같다면 빈 값
} else {
$next = $page + 1; // next변수에 page + 1을 해준다.
echo "<li><a href='?page=$next'>다음</a></li>"; // 다음글자에 next변수를 링크한다. 현재 4페이지에 있다면 +1하여 5페이지로 이동하게 된다.
}
if ($page >= $total_page) { // 만약 page가 페이지수보다 크거나 같다면
echo "<li class='fo_re'>마지막</li>"; // 마지막 글자에 긁은 빨간색을 적용한다.
} else {
echo "<li><a href='?page=$total_page'>마지막</a></li>"; // 아니라면 마지막글자에 total_page를 링크한다.
}
?>
</ul>
</div>
<div id="write_btn">
<a href="board.php"><button>글쓰기</button></a>
</div>
</div>
</body>
</html>
https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=bgpoilkj&logNo=221265496444
[PHP] 게시판 블록 페이징 하기 #9
※ 2019/05/31 내용 수정 ※ 2019/06/06 코드 수정 ※ 2019/09/28 코드 수정 예제파일 http://developtest....
blog.naver.com
'PHP' 카테고리의 다른 글
PHP+그누보드)@Include_once 와 Include_once차이 (0) | 2021.09.02 |
---|---|
PHP)preg_match 함수 (0) | 2021.08.29 |
PHP) 전역변수, 지역변수, 정적변수 (0) | 2021.08.29 |
PHP) 윈도우 10 환경에서 아파치, PHP7 설치 (0) | 2021.08.26 |
php) unset (0) | 2021.08.22 |
댓글