** list.php
이전에 작성했던 코드 아래에 php 코드를 작성한다
<table align=center>
<thead align="center">
<tr style="background: #AAA7B0; opacity:0.9; font-size:20px">
<th width=70>번호</th>
<th width=300>제목</th>
<th width=120>작성자</th>
<th width=120>작성일</th>
<th width=70>조회수</th>
<th width=70>좋아요</th>
</tr>
</thead>
<?php
$conn = mysqli_connect('localhost', 'root', 'mysql', 'board');
$n_sql = "SELECT count(*) FROM board";
$n_result = mysqli_query($conn,$n_sql);
$row = mysqli_fetch_row($n_result);
$num = $row[0]; //board DB 내의 전체 행 개수를 가져온다
$list_num=5; //한 페이지에 보여줄 게시글 개수
$page_num=3; //블럭 당 페이지 개수
//page가 설정되어있으면 page, page가 설정된 변수가 아니라면 page=1
$page=isset($_GET['page'])? $_GET['page'] :1
$total_page = ceil($num/$list_num); //전체 페이지 수 = 전체 게시글 수 / 블럭 당 페이지 수
$now_block = ceil($page/$page_num); //현재 블록 번호 = 현재 페이지 번호 / 블럭 당 페이지 수
/** 블록의 시작 번호 = (현재 페이지 번호-1) X 블럭 당 페이지 수 + 1
현재 블럭이 1페이지라면 시작 번호는 (1-1)x3+1 = 1
2페이지라면 (2-1)x3+1= 4 **/
$block_start=(($now_block-1)*$page_num)+1;
if($block_start <= 0){
$block_start = 1;
}
/** 블록의 마지막 번호 = 현재 페이지 번호 X 블럭 당 페이지 수
현재 블럭이 1페이지라면 마지막 번호는 1x3 = 3 **/
$block_end=$now_block*$page_num;
if($block_end>$total_page){
$block_end=$total_page;
}
//페이지 시작 = 현재 페이지 번호-1 X 한 페이지에 보여줄 게시글 개수
$page_start=($page-1) * $list_num;
$sql2 = "SELECT * FROM board ORDER BY idx DESC LIMIT $page_start, $list_num";
$result = mysqli_query($conn, $sql2);
//글 번호, page가 0부터 시작하기 때문에 1을 더해준다
$cnt = $page_start+1; //while문의 끝에서 $cnt++;한다
?>
* ceil() 소수값 올림 함수
게시글이 1개여도 페이지가 있어야한다
$total_page = ceil($num/$list_num);
예를 들어 게시글 26개가 있으면 26/5 = 5.2 → 6이므로

페이지가 6개로 구성된다
현재 4페이지에 있다면 4/3=1.33...→ 2이므로 2번째 블록에서 6페이지를 볼 수 있다
$now_block = ceil($page/$page_num);

페이징 기능도 search_result에 맞게 수정하고, 코드를 테이블이 끝나는 곳에 입력한다
<div id="page_num" style="text-align: center; margin-top: 10px; font-size: 20px">
<?php
if($page <= 1){
echo "<a href=\"search_result.php?page=1&category=$category&search=$search&date1=$date1&date2=$date2\"> ◀ 이전 </a>";
} else {
$pre = $page - 1;
echo "<a href=\"search_result.php?page=$pre&category=$category&$search=$search&date1=$date1&date2=$date2\"> ◀ 이전 </a>";
};
?>
<?php
$per=1;
while($per <= $total_page){
if($page==$per){
echo "<a href=\"search_result.php?page=$per&category=$category&search=$search&date1=$date1&date2=$date2\"> $per </a>";
} else {
echo "<a href=\"search_result.php?page=$page&category=$category&search=$search&date1=$date1&date2=$date2\"> $per </a>";}
$per++;
}
?>
<?php
if($page < $total_page){
$next = $page + 1;
echo "<a href=\"search_result.php?page=$next&category=$category&search=$search&date1=$date1&date2=$date2\"> 다음 ▶ </a>";
} else {
$next = $page + 1;
echo "<a href=\"search_result.php?page=$total_page&category=$category&search=$search&date1=$date1&date2=$date2\"> 다음 ▶ </a>";
};
?>
</div>

** list.php 전체 코드
<?php
session_start();
if(!isset($_SESSION['username'])) {
echo "<script>alert('비회원입니다!');</script>";
echo "<script>window.location.replace('main.php');</script>";
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Board</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR&display=swap');
* {font-family: 'Noto Sans KR', sans-serif;}
body {
height: 100vh;
background: url('bg.jpg') no-repeat center;
background-size: cover;
overflow: auto;
}
table {
border-top: 1px solid #444444;
border-collapse: collapse;
color: #1F1821;
}
tr {
border-bottom: 1px solid #444444;
padding: 10px;
}
td {
border-bottom: 1px solid #B8B7B9;
padding: 10px;
}
a:link {
color: #57A0EE;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.btn {
text-align: center;
padding-top: 20px;
}
.read_btn {
width: 700px;
height: 200px;
text-align: center;
margin: auto;
margin-top: 50px;
}
.read_btn1 {
height: 50px;
width: 100px;
font-size: 20px;
text-align: center;
background-color: #FFFFFF;
opacity: 0.9;
border: 2px solid black;
border-radius: 10px;
}
</style>
</head>
<body>
<p style="font-size:25px; text-align:center; color: white;"><b>게시판</b></p>
<table align=center>
<thead align="center">
<tr style="background: #AAA7B0; opacity:0.9; font-size:20px">
<th width=70>번호</th>
<th width=300>제목</th>
<th width=120>작성자</th>
<th width=120>작성일</th>
<th width=70>조회수</th>
<th width=70>좋아요</th>
</tr>
</thead>
<?php
$conn = mysqli_connect('localhost', 'root', 'mysql', 'board');
$n_sql = "SELECT count(*) FROM board";
$n_result = mysqli_query($conn,$n_sql);
$row = mysqli_fetch_row($n_result);
$num = $row[0];
$list_num=5;
$page_num=3;
$page=isset($_GET['page'])? $_GET['page'] :1;
$total_page = ceil($num/$list_num);
$now_block = ceil($page/$page_num);
$block_start=(($now_block-1)*$page_num)+1;
if($block_start <= 0){
$block_start =1;
}
$block_end=$now_block*$page_num;
if($block_end>$total_page){
$block_end=$total_page;
}
$page_start=($page-1) * $list_num;
$sql2 = "SELECT * FROM board ORDER BY idx DESC LIMIT $page_start, $list_num";
$result = mysqli_query($conn, $sql2);
$cnt = $page_start+1;
while($row = mysqli_fetch_array($result)){
?>
<tbody>
<tr align=center style="background: #E6E4E7; opacity:0.6; font-size:17px">
<td><?php echo $cnt;?></td>
<td width="500" align="center"><a href="read.php?idx=<?=$row['idx']?>"><?php echo $row['title'];?></a></td>
<td width="100" align="center"><?php echo $row['name'];?></td>
<td width="200" align="center"><?php echo $row['udate'];?></td>
<td><?php echo $row['hit'];?></td>
<td><?php echo $row['liked'];?></td>
</tr>
<?php
$cnt++;
?>
</tbody>
<?php } ?>
</table>
<div style="text-align: center; margin-top: 10px; font-size: 20px">
<?php
if($page <= 1){
echo "<a href=\"search_result.php?page=1&category=$category&search=$search&date1=$date1&date2=$date2\"> ◀ 이전 </a>";
} else {
$pre = $page - 1;
echo "<a href=\"search_result.php?page=$pre&category=$category&$search=$search&date1=$date1&date2=$date2\"> ◀ 이전 </a>";
};
?>
<?php
$per=1;
while($per <= $total_page){
if($page==$per){
echo "<a href=\"search_result.php?page=$per&category=$category&search=$search&date1=$date1&date2=$date2\"> $per </a>";
} else {
echo "<a href=\"search_result.php?page=$page&category=$category&search=$search&date1=$date1&date2=$date2\"> $per </a>";}
$per++;
}
?>
<?php
if($page < $total_page){
$next = $page + 1;
echo "<a href=\"search_result.php?page=$next&category=$category&search=$search&date1=$date1&date2=$date2\"> 다음 ▶ </a>";
} else {
$next = $page + 1;
echo "<a href=\"search_result.php?page=$total_page&category=$category&search=$search&date1=$date1&date2=$date2\"> 다음 ▶ </a>";
};
?>
</div>
<div class="read_btn">
<button class="read_btn1" onclick="window.location.href='write.php'">글쓰기</button>
</div>
</body>
</html>'Web Hacking Study > Web Page 만들기' 카테고리의 다른 글
| 게시판 페이지 개발 (파일 업로드, 파일 다운로드) (0) | 2022.06.07 |
|---|---|
| 게시판 페이지 개발 (게시글 검색 기능, 게시글 검색 시 기간 설정) (0) | 2022.06.06 |
| 게시판 페이지 개발 (게시글 삭제 기능) (0) | 2022.05.30 |
| 게시판 페이지 개발 (게시글 수정 기능) (0) | 2022.05.29 |
| 게시판 페이지 개발 (게시글 보기, 게시글 조회수 기능) (0) | 2022.05.26 |
댓글