Information Security
12 게시글 목록 출력 본문
★ main.php에서 게시글 목록 출력
-메인 페이지에 게시글 목록을 출력해 볼 것이다.
-일단 DB에서 board 테이블의 모든 데이터를 가져오는 쿼리를 sql 변수에 저장한다.
-> 그리고 mysql_fetch_array() 함수를 사용해서 쿼리의 실행 결과 중 한 행을 배열 형태로 가져온다.
※ mysql_fetch_array() 함수
msql_fetch_array — Fetch row as array
http://php.net/manual/en/function.msql-fetch-array.php
현재 board 테이블에 저장되어 있는 게시글은 위와 같다.
main.php 페이지의 소스를 보면 select * from board;의 결과 중 한 행만 배열 형태로 가져온 것을 확인할 수 있다.
mysql_fetch_array() 함수를 한번 더 호출하면 다음 행을 가져온다.
$row 배열을 사용하여 게시글의 목록 중 한 행을 출력한다.
-게시글은 수십 수백개가 될 것이므로 while 문을 사용하여 게시글 목록을 출력해야 한다.
-$row 변수를 조건문에 넣으면 mysql_fetch_array() 함수로 인해 한 행(한 게시글)씩 출력하다가 DB에 저장된 게시글을 모두 출력하여서 $row 변수에 아무 값도 들어가지 않을 때 false로 동작하여 while 문을 빠져나올 것이다.
게시글을 더 작성했다. 모두 출력되었다.
☆ 게시글 목록 10개씩 출력하기
-게시글을 한 화면에 10개씩 출력하고, 목록 아래에 링크를 추가하여 다음 페이지로 넘어갈 수 있도록 구현할 것이다.
-일단 select 문 실행 결과의 행 수(게시글 수)를 tmp 변수에 저장한다.
-> 게시글 수를 10으로 나눈 결과를 정수(int)로 형 변환한다.
-게시글 수를 10으로 나눈 나머지가 0이 아니라면 if 문에 참으로 동작하여 total_cnt(페이지 수) 값이 증가할 것이다.
ex) 만약 게시글이 35개라면 total_cnt에 35/10=3이 저장되고, 나머지는 5이므로 if 문에 참으로 동작하여 값이 3+1=4가 될 것이다.
-위에서 변수를 정의해 줬으니 이제 페이지를 넘길 링크를 설정해야 한다.
-for 문을 통해서 total_cnt 변수의 값만큼 링크를 생성한다.
-메인 페이지의 $_GET[no]에 i 변수의 값을 전달한다.
-for 문이 수행되면서 제일 먼저 i의 값 0이 전달되고 if 문에서는 거짓으로 동작된다.
$sql = "select * from board order by no desc limit 10";
-> 해당 select 문이 sql 변수에 저장된다.
-> 최근에 쓴 글이 맨 위에 위치해야 하므로 order by desc(내림차순 정렬)을 쿼리에 추가한다.
-그리고 i의 값이 증가하면서 if 문에서 참으로 동작할 것이다.
$offset = $_GET[no] * 10;
$sql = "select * from board order by no desc limit $offset, 10";
-> 전달받은 i의 값을 10에 곱해서 offset 변수(출력하는 결과의 시작점)에 저장한다.
-> offset 변수의 값부터 10개의 글을 반환하는 쿼리이다.
위에서 설명한 코드의 전체는 위와 같다.
i=0
-> $_GET[no]=0
-> if(isset($_GET[no])) -> False
-> $sql = "select * from board order by no desc limit 10";
i=1
-> $_GET[no]=1
-> if(isset($_GET[no])) -> True
-> $offset = 10 * 1 = 10
-> $sql = "select * from board order by no desc limit 10, 10";
i=2
-> $sql = "select * from board order by no desc limit $20, 10";
.....
.....
for 문은 위와 같이 동작한다.
-> sql 변수에 쿼리가 저장되고 해당 쿼리의 실행 결과가 ret 변수에 저장된다.
-> 이 ret 변수는 또 mysql_fetch_array() 함수에 들어간다.
-> while 문에 의해 게시글을 10개씩 출력한다.
지금 board 테이블에 저장되어 있는 게시글은 총 11개이다.
1페이지
2페이지
-> main.php 페이지에 접속한 결과 게시글이 11개이므로 1페이지에 10개, 2페이지에 1개 출력된 것을 확인할 수 있다.
※ 이렇게 게시글 목록 출력을 완료했고, 이제 게시글 수정, 삭제만 구현하면 게시판이 완성된다. to be continued....
'Web Hacking > Web 기초' 카테고리의 다른 글
13 게시글 확인 + 수정 + 삭제 (0) | 2017.11.30 |
---|---|
11 게시글 작성 + 저장 페이지 (0) | 2017.11.28 |
10 게시판 회원가입 페이지 + 로그인 페이지 구현 (0) | 2017.11.28 |
09 게시판 기본 형식 구축 (1) | 2017.11.24 |
8 인증 처리 (0) | 2017.11.23 |