[웹 개발] 검색 및 정렬 기능 구현

2024. 7. 16. 09:55·웹개발(PHP-Mysql)

 

저번시간에는 CRUD 페이지 구현을 진행하였습니다.

https://jamesbexter.tistory.com/entry/%EC%9B%B9-%EA%B0%9C%EB%B0%9C-CRUD%EC%83%9D%EC%84%B1%EC%9D%BD%EA%B8%B0%EC%88%98%EC%A0%95%EC%82%AD%EC%A0%9C-%ED%8E%98%EC%9D%B4%EC%A7%80-%EB%A7%8C%EB%93%A4%EA%B8%B0

 

[웹 개발] CRUD(생성,읽기,수정,삭제) 페이지 만들기

저번시간엔 로그인&로그아웃 인증을 구현하였습니다. https://jamesbexter.tistory.com/entry/2%EC%A3%BC%EC%B0%A8-%EA%B3%BC%EC%A0%9C-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85-%ED%8E%98%EC%9D%B4%EC%A7%80-%EB%A7%8C%EB%93%A4%EA%B8%B0 회원가입

jamesbexter.tistory.com

 

 

 

이번시간에는 검색 및 정렬 기능을 구현해보겠습니다.


 

메인페이지 화면에 검색창을 추가하였습니다.

 

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주차 과제> 회원가입 페이지 만들기  (1) 2024.05.15
<2주차 과제> mini mission  (0) 2024.05.15
'웹개발(PHP-Mysql)' 카테고리의 다른 글
  • [웹 개발-PHP] Pagination 기능 추가(+ 보완할 점)
  • [웹 개발] 마이페이지(비밀번호 변경 & 개인정보 수정)
  • [웹 개발] CRUD(생성,읽기,수정,삭제) 페이지 만들기
  • <2주차 과제> 회원가입 페이지 만들기
무너박사
무너박사
IT 보안 블로그 입니다. 제가 작성하는 블로그가 누군가의 공부에 조금이라도 도움이 되길 바라며 작성하였습니다.
  • 무너박사
    무너박사의 연구일지
    무너박사
  • 전체
    오늘
    어제
    • 분류 전체보기 (104)
      • WEB 지식 (3)
      • 웹해킹 (13)
      • 웹개발(PHP-Mysql) (12)
      • 웹개발(JSP-Oracle) (2)
      • 워게임 문제풀이 (19)
        • Segfault (17)
        • Dreamhack (2)
      • SQL (3)
      • Python (2)
      • AI (1)
        • LLM(Large Language Model) (1)
      • Kail Linux (3)
      • 잡다한 지식 (2)
      • 모바일 앱개발(Kotlin-PHP-Mysql) (13)
      • 모바일 앱해킹(Android) (31)
        • Frida Lab (2)
        • Android DIVA (8)
        • Insecure Bank (20)
      • 안드로이드 위협 탐지 및 우회 (0)
        • 루팅 탐지 & 우회 (0)
        • 디버깅 탐지 & 우회 (0)
        • 에뮬레이터 탐지 & 우회 (0)
        • Frida 탐지 & 우회 (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      칼리리눅스
      시스템해킹
      모바일 앱개발
      insecure bank
      android diva
      취업반 6기
      해킹
      안드로이드 스튜디오
      취업반
      앱해킹
      모바일앱개발
      php
      리패키징
      XSS
      Koltin
      normaltic
      모의해킹
      웹해킹
      인시큐어뱅크
      dom based xss
      Blind sql injection
      모바일 앱해킹
      취업반6기
      mobile diva
      Kotlin
      sql injection
      Android Studio
      인시큐어 뱅크
      MySQL
      워게임
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    무너박사
    [웹 개발] 검색 및 정렬 기능 구현
    상단으로

    티스토리툴바