저번시간에는 CRUD 페이지 구현을 진행하였습니다.
이번시간에는 검색 및 정렬 기능을 구현해보겠습니다.
메인페이지 화면에 검색창을 추가하였습니다.
page.php 화면 |
검색조건으로는 제목 ,작성자 , 내용 이 들어가게됩니다.
검색조건 선택바 |
정렬기능으로는 제목,날짜순,좋아요 순으로 정렬이 가능해졌습니다!
정렬기능 선택바 |
날짜조건 또한 넣어주어 기간내의 게시물을 검색할 수 있게 만들었습니다.
기본값은 2024-01-01~2025-12-30 입니다.
날짜조건 선택창 |
코드설명
<page.php>
<?php
include 'dbcon.php';
session_start();
if(!($_SESSION['loggedin'])){ // 점프해서 page.php 로 오는것을 방지.
header('Location: /index.php');
exit();
}
$page_viewed=8;
$current_page= isset($_GET['pageidx']) ? $_GET['pageidx']:1; //기본적으로 페이지는 1페이지로 시작
// 검색 조건과 검색어 가져오기
$stand = isset($_POST['stand']) ? $_POST['stand'] : 'post_name'; // 기본적으로 제목으로 검색
$search = isset($_POST['search']) ? $_POST['search'] : '';
$sort = isset($_POST['sort']) ? $_POST['sort'] : 1;// 기본적으로 제목으로 정렬
$startdate = isset($_POST['startdate']) ? $_POST['startdate'] : '2024-01-01';// 날짜 설정 안할시 자동으로 min 값
$enddate = isset($_POST['enddate']) ? $_POST['enddate'] : '2025-12-29';// 날짜 설정 안할시 자동으로 max 값
?>
<!DOCTYPE html>
<html lang="en">
<head>
<style> /*a 태그 스타일시트*/
a:link {
color : black;
text-decoration-line: none;
}
a:hover{
text-decoration-line: underline;
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="holygrail.css" rel="stylesheet" type = "text/css">
<link href="div.css" rel="stylesheet" type = "text/css">
<title>감자대학교 메인페이지</title>
</head>
<body>
<div class="wrapper">
<header>
<div style="text-align:center ; color: #B86824; font-size:20px ; font-weight:semi bold;transform:translate(0px,10px)">GamJa National University</div>
<div style="text-align: right ;font-weight:bold;transform:translate(-20px,-10px)"><a style="color:purple" href = "mypage.php">마이페이지</a></div>
</header>
<nav>
카테고리
<form action="logout.php" method="POST"><div style="position:absolute;bottom:0px;left:10px;width:20%">
<input style="height:30px" type = submit class="submit-btn" value="Logout"></form></div>
<form action="post_write.php" method="POST"><div style="position:absolute;top:170px;left:10px;width:20%">
<input style="height:40px" type = submit class="submit-btn" value="게시글 작성"></form></div>
</nav>
<main>
<div>
<form style="text-align:left" method="POST">
<select name="stand">
<option value="post_name">제목</option>
<option value="postwriter">작성자</option>
<option value="contents">내용</option>
</select>
<input style="border: solid 1.5px black;width:25%;transform:translate(0px,-1px)" type="text" name ="search" placeholder = "검색" maxlength='30' >
<input style="border: solid 1.5px black" type = submit value="검색">
<select name="sort">
<option value="post_name">제목순</option>
<option value="postdate desc">최신순</option>
<option value="postdate asc">오래된순</option>
<option value="liked">좋아요순</option>
</select>
<input name="startdate" type="datetime-local" max="2025-12-29" min="2024-01-01" value="2024-01-01T00:00">
<input name="enddate" type="datetime-local" max="2025-12-29" min="2024-01-01" value="2025-12-30T00:00">
</form>
</div>
<br><hr style="border: solid 1px #696969;height:1px;width:100%">
<table style=border-collapse:collapse;width:100%;>
<tr style="border-bottom:2px solid black;">
<td width="50%">글 제목</td><td width="30%">작성자</td><td style="text-align:center" width="5%" >liked</td><td style="text-align:center" width="5%" >view</td><td style="text-align:center" width="20%" >날짜</td>
</tr>
<?php // postinfo 테이블 에서 게시글 내용 8개 가져오는 코드 시작.
$sql = "select * from postinfo where postdate BETWEEN '".$startdate."' AND '".$enddate."' and ".$stand." like '%".$search."%' order by ".$sort; //검색기능을 포함한 sql 구문생성
$result = mysqli_query($dbcon,$sql);
$row=mysqli_fetch_array($result);
for($count=1;$count<=15;$count=$count+1){?>
<tr height="45px" style="border-bottom: 1px solid #696969">
<td width="50%"><a href="post_read.php?idx=<?php echo $row['idx']; ?>"><?php echo $row['post_name']; ?></a></td>
<td width="20%"><?php echo $row['postwriter']; ?></td>
<td style="text-align:center" width="5%" height="5%" ><?php echo $row['liked']; ?></td>
<td style="text-align:center" width="5%" height="5%" ><?php echo $row['view']; ?></td>
<td style="text-align:center" width="20%" height="5%" ><?php echo $row['postdate']; ?></td>
</tr><?php
$row=mysqli_fetch_array($result);
}
?>
</main>
</body>
</html>
'웹개발(PHP-Mysql)' 카테고리의 다른 글
[웹 개발-PHP] Pagination 기능 추가(+ 보완할 점) (0) | 2024.07.17 |
---|---|
[웹 개발] 마이페이지(비밀번호 변경 & 개인정보 수정) (0) | 2024.07.16 |
[웹 개발] CRUD(생성,읽기,수정,삭제) 페이지 만들기 (0) | 2024.07.15 |
<2주차 과제> 회원가입 페이지 만들기 (0) | 2024.05.15 |
<2주차 과제> mini mission (0) | 2024.05.15 |