Today I Learned …

[웹개발] 게시글 리스트 출력 기능 본문

Web/APM

[웹개발] 게시글 리스트 출력 기능

염베리 2021. 10. 26. 06:51

* 개인적인 공부 내용을 기록한 글입니다.


최종 화면

페이징은 다음 포스팅에서 후술한다.


게시판 리스트 출력 기능

 

 

0. 요약

[1] 게시판 페이지를 만든다.

[2] 게시글 목록을 출력할 표를 만든다.

[3] DB에 담긴 게시글 정보를 최신글부터 가져와 출력해준다.

 

 

1. 게시판 페이지 (= board.php) 에 게시글 목록을 출력할 표를 만든다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Board</title>
</head>
<body>
    <div class=top><h2>게시판</h2></div>
    <button class=no onclick="window.location.href='write.php'">글쓰기</button>
    <table class=middle>
        <thead>
            <tr align=center>
                <th width=70>Post ID</th>
                <th width=300>제목</th>
                <th width=120>작성자</th>
                <th width=120>작성일</th>
                <th width=70>조회수</th>
                <th width=70>좋아요</th>
            </tr>
       </thead>

[0] 게시글 목록 상단의 제목 부분을 만든다.

① Post ID

② 제목

③ 작성자

④ 작성일

⑤ 조회수

⑥ 좋아요

 

 

2. DB에 담긴 게시글 정보를 최신글부터 가져와 출력해준다.

       	//(윗 부분)...
        <?php
            $conn = mysqli_connect('localhost', 'choco', '7173', 'study_login');
            
            $sql = "SELECT * FROM board ORDER BY id DESC";
            $res = mysqli_query($conn, $sql);

            while($row = mysqli_fetch_array($res)){
        ?>
            <tbody>
                <tr align=center>
                    <td><?php echo $row['id'];?></td>
                    <td><a href="view.php?id=<?=$row['id']?>"><?php echo $row['title'];?></a></td>
                    <td><?php echo $row['name'];?></td>
                    <td><?php echo $row['written'];?></td>
                    <td><?php echo $row['hit'];?></td>
                    <td><?php echo $row['liked'];?></td>
                </tr>
            </tbody>
        <?php } ?>
    </table>
</body>
</html>

[1] SELECT ~ ORDER BY 구문을 통해 모든 게시글의 정보를 최신글부터 가져온다.

[2] fetch를 반복 실행해서 쿼리문을 통해 뽑은 모든 행을 출력한다.

[3] echo*를 통해 게시글 목록 표의 원하는 위치에 원하는 컬럼별 정보를 출력한다.

* <?php echo 는 <?=로 줄여쓸 수도 있다.

 

 

2-1. 쿼리문 뜯어보기

1. SELECT * FROM board ORDER BY id DESC

[1] SELECT * FROM board

⇒ board (= 게시글 DB) 의 모든 정보를,

[2] ORDER BY id DESC

⇒ id (= 식별자컬럼명) 에 대한 내림차순으로 가져온다.

 

2. 쿼리문을 통해 뽑은 모든 행을 출력하고 싶다면?

[1] mysqli_fetch_array는 1회 실행에 한 개의 행만을 가져온다.

[2] 또한 데이터를 가져온 후 함수 내부의 포인터를 증가시켜, 다시 호출될 때 그 다음 행을 가져올 수 있도록 한다.

[3] 따라서, while문을 통해 여러번 fetch 해주면 모든 행을 순서대로 출력할 수 있다.

프로필사진
berry
FE Developer, loves React & better DX
Comments