'동물농장 > 사진' 카테고리의 다른 글

밥 값하는 개  (0) 2013.08.27
담배 뭐 줄까?  (0) 2013.08.27
생각하는 사자  (0) 2013.08.27
똑같아도 너무 똑같아!  (0) 2013.08.27
개도미노  (0) 2013.08.27
개는 역시 똥개  (0) 2011.03.04

뭐가 뭔지 잘 모르겠지만 일단은 출력된다...

http://www.jthink.net/jaudiotagger/

여기서 왼쪽 하단에 downloads 탭에 Maven Release 에서 

가장 최신으로 보이는 2.2.0-SNAPSHOT 으로 들어간다음

jaudiotagger-2.2.0-20130321.142353-1.jar

jar 파일을 다운 받아 프로젝트 속성에서 라이브러리를 추가해주었다.


jaudiotagger-2.2.0-20130321.142353-1.jar


자세한 소스분석은 모르겠다...


import java.io.File;

import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.mp3.MP3File;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;
import org.jaudiotagger.tag.id3.AbstractID3v2Tag;
public class test {
 public static void main(String[] args) throws Exception {
		String decoding = "ISO-8859-1";
		String encoding = "EUC-KR";
		File file = new File("/home/jeong/걸스데이-말해줘요.mp3");
		MP3File mp3 = (MP3File) AudioFileIO.read(file);
//  ID3v24Tag tag24 = mp3.getID3v2TagAsv24();
		AbstractID3v2Tag tag2 = mp3.getID3v2Tag();

		Tag tag = mp3.getTag();
		String title = tag.getFirst(FieldKey.TITLE);
		String artist = tag.getFirst(FieldKey.ARTIST);
		String album = tag.getFirst(FieldKey.ALBUM);
		String year = tag.getFirst(FieldKey.YEAR);
		String genre = tag.getFirst(FieldKey.GENRE);

		System.out.println("Tag : " + tag2);
		System.out.println("Song Name : " + title);
		System.out.println("Artist : " + artist);
		System.out.println("Album : " + album);
		System.out.println("Year : " + year);
		System.out.println("Genre : " + genre);
	}
}


출력결과

Tag : Tag content:

TIT2:Text="말해줘요"; 

TPE1:Text="걸스데이"; 

TALB:Text="GIRL`S DAY Party #6 [Digital Single]"; 

TCON:Text="아이돌"; 

TRCK:Text="1"; 

TYER:Text="2013"; 

TPE2:Text="걸스데이"; 

USLT:Language="English"; Lyrics="Intro>

우리 둘이 함께 해요 나를 혼자 두진 마

이 밤이 깊어져만 가 빨리 고백 

(민아)

안해? 안해? 안할꺼야?


A>

(소진)

You! 넌 내 맘을 너무 몰라 

Oh You! 빛나는 저 파도같아

You! 왜 자꾸 애태우는지 (아이야아 아아 이 야이야)


A`

(혜리)

(하나 하나 하나 둘 셋 넷!) 하면 솔직히 내게 말해줘 

(니가 먼저 말해주면 안돼) Oh 부끄러워 부끄럽단 말야 


B>

(민아)

시원한 바람 아름다운 해변 이곳엔 너와 단 둘이 

모든 걱정들은 저기 저 바다에 던져 버릴래 


C> 

(다같이)

지금 말해줘요 말해줘요 말해줘요  

(소진)

사실은 나를 좋아한다고 우릴 위한 저 바닷가로  빨리 떠나요 


(다같이)

지금 말해줘요 말해줘요 말해줘요 

(민아)

난 너 하나면 충분해 약속해 손가락 걸고 말해줘 말해줘요 말해줘 말해줘요 



Rap>

(유라)

다다른 여자보단 내가 나아 하나보단 둘이 

아침부터 저녁까지 우리 둘이 (나나나나) 

이 노래를 불러 Say 1!2!3!4!



(민아) 

야! 안 따라 부르냐?


B>

(혜리)

뜨거운 태양 부서지는 파도 이곳엔 너와 단 둘이 

(민아)

모든 걱정들은 저기 저 하늘에 던져 버릴래 


C> 

(다같이)

지금 말해줘요 말해줘요 말해줘요 

(민아)

난 너하나면 충분해 약속해 손가락 걸고 말해줘 말해줘요 말해줘 말해줘요 


Bridge>

(유라) 

오늘밤이 다 가기 전에 고백해줄래요 

(소진)

사랑해 사랑해 달콤한 입술로

(민아)

아침을 깨워줄 그댄 너란 걸  


C> 

(소진)

지금 말해줘요 나 사랑한다는 그 말 아끼지 말아요 두 손을 꼭 붙잡고 멀리 떠나요



(다같이-소진 애드립)

지금 말해줘요 말해줘요 말해줘요

(민아)

너와 이 여름안에서 영원히 함께 할래요 말해줘 말해줘요 말해줘 말해줘요


"; 

TLAN:Text="kor"; 

TPOS:Text="1"; 

APIC:MIMEType="image/jpeg"; PictureData="57966 bytes"; 


Song Name : 말해줘요

Artist : 걸스데이

Album : GIRL`S DAY Party #6 [Digital Single]

Year : 2013

Genre : 아이돌









'지식메모 > JAVA' 카테고리의 다른 글

숫자 천단위 콤마 입력하기  (0) 2014.09.25
Json의 이해  (0) 2013.11.05
대문자 소문자 서로 변환하기  (0) 2013.10.08
java 문자열 구분자로 자르기  (0) 2013.10.02
ObjectNode 와 JsonNode 차이?  (0) 2013.09.06
mp3 ID3 v2 태그 파싱하기  (2) 2013.08.27
  1. 컴퓨터에 미친 학생 2014.10.16 17:36

    어우 감사합니다.찾고 다녔는데...이렇게 볼 줄이야ㅣ...ㅠㅠ

    • yonoo88 2014.10.16 18:50 신고

      도움이 되셨다니 다행이네요. 나눌 수 있어 감사합니다

개도미노

2013.08.27 01:06



야 밀지마







'동물농장 > 사진' 카테고리의 다른 글

밥 값하는 개  (0) 2013.08.27
담배 뭐 줄까?  (0) 2013.08.27
생각하는 사자  (0) 2013.08.27
똑같아도 너무 똑같아!  (0) 2013.08.27
개도미노  (0) 2013.08.27
개는 역시 똥개  (0) 2011.03.04


화면을 나누고 싶을때

윈도우키 + 방향키를 누르면 알아서 분할된다.





윈도우키 + ← 

 윈도우키 +




사진처럼 양쪽으로 알아서 배치된다.

방향키 위를 누르면 전체화면이 되고

아래를 누르면 최소화 된다.


또 하나 팁 바탕화면 보고 싶을땐


윈도우키 + D


누르면 볼 수 있다.



  1. 2013.08.24 12:21

    비밀댓글입니다

  2. 깨비 2014.03.22 22:21

    감사합니다~^^

  3. 123 2016.03.22 20:10

    오 개꿀팁 감사융

  4. ㅁㄴㅇㄹ 2016.07.30 15:05

    꿀팁 고마워요!

뭔가 하다가 프로그램이 멈출때 컴퓨터를 쓰는 사람이라면 꼭 눌러본 단축키

Ctrl + Alt + Del


윈도우 7 사용자라면 이런 화면이 뜬다.



여기서 작업관리자 시작을 눌러야



이 화면이 뜨게 된다.

근데 저 중간에 파란화면을 거치는게 귀찮다.


이럴때

Ctrl + Shift + Esc

눌러주면 파란 화면 없이 바로 작업관리자 창이 뜬다.









2년동안 한번도 청소를 안했기도 했고 더워서 그런지 팬이 너무 빨리 돌아가서 노트북이 날아갈 것만 같았다.

 

열 때문에 그렇다는데 한번씩 해주는게 좋다고 해서 무릅쓰고 도전.


어차피 한번은 까볼 생각이기도 했으니...


시작하기 전에 주의사항을 먼저 써놔야겠따.



*  나사를 잘 분리해놓자.

어디서 나온 나사인지 잘 구분해놓으면 나중에 편리하다

 나사가 크게 나누면 4가지 크기로 되어있다.

4가 가장 큰 크기라 했을때

4는 2개, 3은 3개, 2는 여러개, 1은 3개 였던거 같다. 

자세한 건 사진에서 더 설명..



*  잘 안 빠진다고 힘 주지 말자.

잘 안 빠지면 어딘가 나사를 덜 풀렀을 확률이 높다. 천천히 살펴보자..



* 처음 끼워져 있던 상태를 잘 기억해놓자

나는 이거 기억이 잘 안나서 난감했다...

결국 망가졌구나 했는데 내가 잘못 끼워놓았었다.

이것도 사진에서 설명..




* 씨디롬과 하드도 다 빼내야 열어볼 수 있다.

난 안 빼도 열 수 있을 줄 알았는데 빼내야 열 수 있었다..

멋모르고 열다가 하마터면 노트북 부술뻔







이제 시작.

분해하느라 그렇게 자세한 사진은 못 찍었다.






1. 키보드 먼저 뜯자


사진에 표시된 부분을 보면 홈이 파여있는데 

여기를 일자 드라이버로 살짝 눌러 들어올리듯이 뺴주면 키보드가 빠진다.






키보드 연결 부분이다. 이걸 빼려면 표시된 부분에 검은색으로 보이는게 있는데 

양쪽 돌출된 부분을 잡고 아래로 당겨주면

선을 뺄 수 있다.


그림으로 예를 들면 





이런 모양인데 검은색 양쪽 돌출부분을 이용하여 내리면 된다.

다시 낄때는 선을 끼워놓고 올려주면 된다.

 



 





그럼 이렇게 드러나게 되는데

표시된 부분의 나사를 풀어준다.




 




 그런데 파랑색으로 표시된 부분이 있는데 자세히 보면

M2X10 이라고 써있다.

이게 전에 설명한 가장 큰 4짜리 나사 2개다.

잘 기억해두자.




 

 


그리고 밑에 보면 터치패드 선이 있는데 테이프가 붙어있다면 떼내고 키보드 뺀 것 처럼 빼주면 된다.



 



 

 

 이제 밑에 나사를 풀어줘야 된다.

여기도 보면 파란색부분은 크기가 3짜리인 나사 3개이고


하얀색부분은 씨디롬 고정나사인데 이건 크기 2짜리 나사이며

이것만 풀면 씨디롬을 뺄 수 있다.


 그 외 나사는 다 크기가 2짜리 나사이고 

가장 자리 나사랑 중앙부에 있는 나사도 다 풀어주자. 

(램은 제외)



  


 

하드디스크를 연 모습이다.

여기서 파란 부분은 하드디스크 전용 나사이니 따로 잘 구분해 놓고

빨간 부분은 크기 2짜리 나사이다. 

다 풀어주고 하드를 뺄 때는 옆으로 살짝 민다음 빼내주면 된다.



 

 

아 그리고 중요한게 있다. 사진을 못 찍어 이 사진으로 대체한다.

노트북을 뒤집어 씨디롬을 뺀 다음 사진에 표시된 부분을 보면 3개의 나사가 있따.

이건 가장 작은 1크기의 나사 3개이며 꼭 풀러주자.

이거 발견 못해서 왜 안 열리나 힘주다가 무리가 가서 부러진거 같다.



 

 

 

다 나사를 풀었따면 이제 열면 되는데 조심하자.


동영상을 참고 했는데 외관은 비슷한데 다른 모델이므로 필요한 부분만 참고하는게 좋다.

 

그리고 이 영상 제목으로 유튜브 검색하면 총 4개의 분해영상이 있으니

고민되면 참고해도 좋을거 같다.

 

노트북 가장자리에 틈을 이용해서 카드를 끼워서 빼내면 잘 된다고 하는데

난 잘 안됐다...

그 결과..




 

걸치는 부분인데 4개 부러졌따..ㅠㅠ

그래도 나사로 고정하는거라 다시 결합하면 큰 차이는 없지만 조심하자..

여러번 분해해봤으면 상관없는데 나처럼 처음 열때는 뻑뻑해서 열기 힘들다..

 

 

 

 

 

열면 이렇게 드러난다.

 



 

 

 

 

 

메인보드를 빼려면 나사를 풀러줘야되는데

사진에 ▽표시된 나사만 풀러주면 된다.

 



 

 

 

쿨러는 양쪽 나사..



 

 

 

 

 

그리고 메인보드를 들추기 전에 아래 두 개의  선을 뽑아주자

이건 그냥 빼면된다.

 



 

 

 

 

 

그리고 표시된 부분을 봐야되는데  저 부분이 꼽혀 있어서 잘 안 빠질 수 있다.

 



 

 

 

 

 

자세히보면 그냥 저런식으로 꼽혀있으니 살살 빼주고

나중에 다시 결합할때 꼭 잊지말자

딱 맞춰지는 느낌이 들고 살짝 들어봤을때 쉽게 안 들리고 고정된 느낌이 오면 된다.

 



 

 

 

 

 

 그런다음 모니터 쪽에 종이같은거 하나 받치고 조심스레 열어본다.

그럼 아랫부분이 드러난다.

쿨러에 먼지가 끼어있어서 훌훌 털어내니 덩어리 먼지가 나왔다.

 

그리고 표시된 부분이 연결되어 있으니 완전히 빼려고 하지말자.

빼도 좋긴한데 나중에 번거로우니 최소한의 선만 빼고 작업하는게 좋을 것 같다.



 

 

 

 

 

 그리고 결합은 역순으로 하면 된다.

 

근데 문제가 나사 위치 기억을 못해서 다 결합했는데

나사가 3개가 남았따;;;

 

그래서 재 분해...

 

근데 또 다시 결합해놓았는데 키보드랑 터치패드가 동작을 안했다.

 

그래서 또 열었다..;;;

 

두 세번은 열었나...

 

왜 안되나 했더니 문제가..

 



 



 

 

 

 뭐가 잘못되었는지 아셨다면 많이 분해 결합 해보신 분이신 거다.

선을 클립 위에 끼웠다..;;

 

그림으로 설명해보자면



 

이렇게 끼운 것이다.. 어쩐지 잘 안 껴지더라...

 

 

 

원래는 이렇게 끼워야 된다.

 



 

 

 즉 파란 선이 검은색 클립 아래로 들어가야 되는데

나는 검은색 위에 끼워넣고 힘으로 억지로 끼웠다..

 

다행히 제대로 연결하니 작동이 되었따..

 

 

 

이렇게 우여곡절 끝에 다시 원상복귀 하였다.

 

5시간을 낑낑 댄거 같다.

그냥 쿨러 먼지청소하고 싶었을 뿐인데...

 

다음부터는 그냥 키보드만 열고 쿨러 쪽에 압축공기 써서 청소해야겠다.

부러진 곳도 있고해서 다시 열기 두렵다. ㄷㄷ

 

또 다음 달이 워런티 기간 끝나는기간이니..

 

 

 일단 쿨러 쪽 통풍은 예전보다 잘 된다.

 

그래도 나중에 SSD 달려고 했는데 그 때는 잘 할 수 있을거 같다.



아수스 노트북 써멀구리스 바르기 (ASUS K42Jc 모델)

링크

http://yonoo88.tistory.com/565


게시판 글 번호 구하기


게시판 페이징을 구현하고 나서 각 페이지에 글 번호를 주어야 하는데


여러 방법이 있을수도 있는데 나는 이렇게 했다.


우선 준비물은 3가지

※ buy는 제가 구매게시판을 만드느라 붙였습니다.


$page 

//페이징 번호이다. 1페이지 2페이지 ...


$buyCnt

//쿼리를 이용해 row로 숫자를 구한다. ex)$buyCnt = mysql_num_rows($buyRs); 

mysql_num_rows() 함수는 row갯수를 구해준다. row는 한 페이지에 몇 개의 글 목록을 보여주는지 결정해준다.



$buyTotalCount 

//db에 있는 총 게시글 갯수이다. 구하는 방법은

$countSql = "select count(*) cnt from 게시판DB명;

$countRs = mysql_query($countSql);

$countData = mysql_fetch_array($countRs);

$buyTotalCount = $countData['cnt'];

이런식으로 구해주면 총 몇 개의 글이 있는지 숫자로 보여준다.




우선 나는 $buyCnt가 50이 나왔으니 한 페이지당 50개씩 글 목록을 불러온다.

먼저 완성소스이다.


//결과 출력

<?

for($i=0;$i < $buyCnt;$i++){

	$buy = mysql_fetch_array($buyRs);						



	if($buyCnt != 50) //글 목록이 50개가 아니라면

		$buyCnt = 50; //50개라 가정하고 계산



	$buyNum =$buyTotalCount-($buyCnt*($page-1));

	$Num = $buyNum - $i;

					

	if($Num <= 0){ //글 번호가 0보다 같거나 작으면

        //아무것도 실행하지 않음으로써 열을 다 지운다.	

	}else{?> //0보다 큰 경우면

		<tr>

		    <td><?=$Num?></td>  //글 번호 출력

		</tr>



	<?}									

}?>



설명을 하자면 500개의 글 들이 있다고 가정할때 1페이지의 첫번째 게시글 번호는 500번이어야 한다. 이걸 계산하기 위해


$buyNum =$buyTotalCount-($buyCnt*($page-1)); 

500 = 500 - ( 50 * (1-1));

2000번이 나온다. 그럼 이걸 가지고 하나씩 감소시키면 저절로 아래 글들의 번호가 매겨진다.

$Num = $buyNum - $i; 

499 =500 - 1;

이렇게 두번째 글의 번호는 1999번이 된다.





그럼 2페이지 라면? 1페이지에서 50개를 이미 보여줬으니 50개를 빼고 시작해야 한다.

 4950 = 500- (50 * (2-1));

이러면 2페이지는 1950부터 시작하게된다.

같은 방법으로 1950부터 쭉 내려간다.

그리고 이 결과를 웹페이지 테이블에 글 번호 행에다가 넣어주면 된다.





그런데 마지막이 문제다. 한 페이지에 50개씩 보여줘야 되는데 마지막 페이지(10페이지라고 가정)에는 18개밖에 없다고 하자.

그럼 계산 값이 이상하게 나오게 된다.

338  = 500 - (18 * (10-1));

마지막 페이지가 338번부터 시작하는 것이다.





원래대로라면 

50  = 500 - (50 * (10-1));

이렇게 깔끔하게 50번부터 시작해서 1번까지 있어야 한다. 






이러한 예외처리를 위해 조건을 걸어준다.


if($buyCnt != 50) //글 목록이 50개가 아니라면

$buyCnt = 50; //50개라 가정하고 계산



이렇게 해주면 마지막 페이지는 50번 부터 시작하게 된다. 하지만..

글은 18개 밖에 없는데 50개를 출력해야하니 이런 현상이 나타난다.


이렇게 아무 값도 없는데 음수로 테이블 출력한다.


이를 방지하고자 조건을 또 걸어준다.


if($Num <= 0){ //글 번호가 0보다 같거나 작으면

        //아무것도 실행하지 않음으로써 열을 다 지운다.

}else{?> //0보다 큰 경우면

<tr>

    <td><?=$Num?></td>  //글 번호 출력

    <td><?=$Date?></td> //글 작성날짜

</tr>


<?}



$Num 은 글 번호이다. 이게 0보다 같거나 작을때 아무처리를 해주지 않으면 0부터 음수는 알아서 출력하지 않는다.
if($Num <= 0){ 

}
이렇게 그냥 대괄호 안에 아무것도 안 써준다.


그리고 else 부분에서 글 번호가 양수이면 테이블을 출력하게 한다. 

그러면 결과는


이렇게 1까지만 나오게 된다. 

이런식으로 글 번호를 줄 수 있다.





'지식메모 > PHP' 카테고리의 다른 글

php 문자열 공백제거하기  (1) 2013.11.13
문자열 분리하기 다루기  (0) 2013.10.08
게시판 글 번호 구하기  (2) 2013.08.13
게시판 페이징 구현하기  (44) 2013.08.12
날짜 출력 함수 사용하기  (0) 2013.08.05
문자열 잘라쓰기  (0) 2013.08.05
  1. JSP 2018.06.04 10:33

    위 코드를 jsp 파일에 작성해야하나요?
    서블릿에 해야하나요?

    • yonoo88 2018.06.05 12:19 신고

      저는 에디트플러스에서 php 로 했어서 그것 까지는 모르겠네요ㅠ




게시판 페이징.. 고난과 역경의 연속..


게시판 페이징 만들려고 며칠 간 헤매고 이해안되서 멘붕이었다가 어찌어찌 구현이 되어서 정리해볼까 합니다.


혹시나 저와 같은 어려움을 겪고 계시는 분이 있으시다면 이 글이 도움이 되었으면 좋겠네요.


제가 만들려고 한 페이징은 이런 모습입니다.



10개씩 보여주고 10개씩 넘어가는 페이징 입니다.


그럼 시작해볼게요





먼저 페이징을 어떻게 할지 생각해봅니다. 

한 페이지에 게시글은 몇 개를 보여줄 것인가.

페이지 번호는 몇 개까지 보여줄 것인가.


저 같은 경우는 이 두개가 항상 헷갈려서 변수명 부터 애를 먹었습니다.


그러면 변수명을 지정하겠습니다.

$pageNum

이 변수는 1 2 3 4 5 6 7 8 9 10 이러한 번호 하나하나를 의미합니다.


$list

이 변수는 한 페이지에 몇 개의 글을 보여줄지 정하는 변수입니다. 

만약 $list = 50 이라면 한 페이지당 50개의 글 목록이 나타나게 됩니다.



먼저 처음에 이 두 변수를 지정해주었습니다.

저는 GET방식으로 페이지 번호를 누르면 주소에 페이지값을 전달하는 방식입니다.


$pageNum = ($_GET['page']) ? $_GET['page'] : 1;     

// 삼항 연산자로 pageNum값이 비어있을때 에러를 방지 하기 위해 pageNum은 초기값 1로 지정해놓았고 

//page는 pageNum이랑 같다고 보시면 됩니다.

//($_GET['page']) = 값을 받아

// ? $_GET['page'] = 값이 있으면 그대로  $_GET['page']  값을 사용하고

//  : 1  = 비어있다면 1로 값을 지정하라는 조건문 입니다.



$list = ($_GET['list']) ? $_GET['list'] : 50; //page : default - 50

//list도 마찬가지로 설정해놓았고 한 페이지에 50개의 글 목록을 보여주게 하겠습니다.







이제 페이징을 만들기 위한 여러 조건들을 정의하겠습니다.



$b_pageNum_list = 10;

//b는 block의 약자라고 생각하시면 됩니다. 블럭에 나타낼 페이지 번호 갯수 입니다. 


$block = ceil($pageNum/$b_pageNum_list);

//현재 리스트의 블럭을 구하는 식 입니다. 




여기서 블럭이란

저 검은상자가 블럭입니다. $b_pageNum_list = 10개이기 때문에 10까지만 나타난 상태구요.

$block = ceil($pageNum/$b_pageNum_list); 이 식은 예를 들면 현재 위 사진의 블럭은 1~10까지 있는 첫번째 블럭입니다.

11~20까지 있는 블럭은 2가 되겠죠. 이런 식으로 계산해주는 식입니다.


계산을 한번 해보겠습니다.

아 ceil 이란 함수는 소수점을 다 올려주는 역할입니다. 1.2든 1.7이든 다 2로 계산해주죠.

현재 페이지 $pageNum가 7페이지라고 가정하고

 $b_pageNum_list는  10으로 정해놨으니 계산하면 0.7이 나오죠?

그럼 올림해주면 1이 됩니다. 현재는 첫번째 블럭에 머물러있다고 판단할 수 있죠.

위에서 설명드렸듯이 1~10 까지 있으면 첫번째 블럭이라고 하였으니 7페이지는 첫번째 블럭에 있어야 하죠.





그럼 다음 블럭 조건을 정하겠습니다.


 

$b_start_page = ( ($block - 1) * $b_pageNum_list ) + 1; 

//현재 블럭에서 시작페이지 번호


$b_end_page = $b_start_page + $b_pageNum_list - 1; 

//현재 블럭에서 마지막 페이지 번호



블럭의 시작과 마지막 페이지 번호를 구하는 변수 입니다.

대입해서 계산해보면 

$block은 현재 첫번째 블럭이니 1 입니다. 여기서 -1을 빼면 0이 나오고

$b_pageNum_list는 10이라고 정했으니 곱해봤자 0이 나옵니다. 마지막으로 1을 더하면

첫번째 블럭의 시작페이지는 1이 됩니다.


만약 두번째 블럭을 구한다고 봤을때 $block은 2가 되고

$b_pageNum_list는 10이니

((2-1) * 10) + 1 = 11 이 나옵니다.

두번째 블럭의 시작번호니 11이 맞습니다.


그럼 마지막 페이지 번호는 위에서 구한 시작페이지 번호를 이용하여 계산합니다.

두번째 블럭 마지막 페이지 번호를 구해보면 $b_start_page는 11이고

$b_pageNum_list는 10이니

11+10-1=20

두번째 블럭의 마지막페이지는 20 입니다.





이제 총 게시글의 페이지 수를 구하겠습니다.



$total_page = ceil( $total_count / $list ); 

// $total_count는 글의 총 갯수이므로 게시판 db에서 count(*) 쿼리로 계산해주시면 됩니다.



총 게시글의 페이지수는 

총 글의 갯수 나누기 페이지당 보여줄 갯수로 나눕니다.

처음에 저는 50개씩 보여주려고 해서 $list = 50 으로 정했습니다.

그래서 50으로 나눠주면 페이지 수가 나오겠죠. 

ceil을 해준 이유는 151개의 글이 있다고 가정했을때

151/50 계산하면 3.x가 나옵니다. 이걸 올림하면 4가 되죠

50으로 나누면 1개의 글이 남죠? 이것도 페이지에 보여주기 위해 4페이지까지 만들어주는 겁니다.





이제 하나만  더 설정해주고 페이징을 구현해보겠습니다.


 

if ($b_end_page > $total_page) 

$b_end_page = $total_page;


이 조건은 어떤 상황을 위한 조건이냐면 블럭의 마지막 페이지가 총 페이지 수보다 클 때 두 숫자를 같게 해주는 조건입니다.

만약 총 페이지 수는 15 페이지 인데 블럭의 마지막 페이지가 20일 경우가 생깁니다. 

이러한 경우는 우리가  $b_end_page = $b_start_page + $b_pageNum_list - 1; 이런 변수를 설정해주어서 생기는 문제입니다.

이 변수에 따르면 무조건 10개씩 계산되어 10단위로 마지막페이지가 끝나게 됩니다.

그래서 총 페이지 수가 15페이지까지 밖에 없는데 마지막 페이지는 20페이지까지 생성되게 됩니다. 

그럼 16페이지부터 20페이지는 아무런 글도 없이 빈 목록이 나타나게 되는거죠.

그래서 총 페이지수랑 마지막 페이지를 같게 맞춰주는 겁니다.



현재 131페이지이고 여기까지 밖에 글이 없는데도 140페이지까지 나오게 하고 있습니다.


132로 넘어가면 자료가 없다고 뜹니다. 140번까지도 마찬가지죠

(자료가 하나도 없습니다.는 제가 따로 설정해주어서 나타나는 메세지입니다.)



이제 위 조건을 주면

딱 글이 있는 페이지만 출력하게 됩니다.






이제 페이징 구현을 해보겠습니다.

먼저 처음으로 가는 버튼을 만들겠습니다.


if($pageNum <= 1){?> //페이지번호가 1보다 작거나 같다면

<font size=2  color=red>처음</font> //링크없이 그냥 처음이라는 문자만 출력합니다.

<?}else{?> //1보다 크다면

<font size=2 ><a href="/yw/buypaging.php?page=&list=<?=$list?>">처음</a></font>

//링크 걸린 처음을 출력합니다. 

<?}

보기쉽게 코드버전으로 추가했습니다. 위와 같은 내용입니다.

1
2
3
4
5
6
7
8
9
10
11
12
 
if($pageNum <= 1){?> //페이지번호가 1보다 작거나 같다면
        <font size=2  color=red>처음</font> //링크없이 그냥 처음이라는 문자만 출력합니다.
 
    <?}else{?> //1보다 크다면
 
        <font size=2 ><a href="/yw/buypaging.php?page=&list=<?=$list?>">처음</a></font>
 
        //링크 걸린 처음을 출력합니다. 
 
    <?}
cs

여기서

<a href="/yw/buypaging.php?page=&list=<?=$list?>">

이 부분은 실제 주소창에 나오는 부분입니다.page= 페이지가 나타나는 부분이고 &list는 50개가 나올 것입니다.


예를 들면 2페이지라면

yonoo88.tistroy.com/yw/buypaging.php?page=2&list=50

이렇게 나타납니다.



처음으로 가는 링크버튼은 무조건 1페이지로 가면 됩니다. 그래서 조건을 1보다 작거나 같을때로 주었고 

<font>태그로 색깔은 color='red' 빨강으로 해주었구요.

1페이지에 있을때는 처음버튼이 필요없으므로 링크를 안 걸어주었습니다. 



현재 1페이지에 있을때 상태. 처음 글자에 링크가 안 걸려있다


2페이지 일 때 처음버튼에 링크가 걸려있다.


이렇게 구현해주기 위한 부분이었습니다.

아 그리고 중간 중간 <? ?> 이 표시는 php때문에 사용하였습니다. 

php안에 echo를 사용해서 html을 구현하는 방식도 있는데 

저는 html태그안에 php를 사용하는 방식으로 했습니다.







이제 10개씩 거꾸로 가는 이전 링크를 만들겠습니다.


if($block <=1){?>  //block이 1보다 작거나 같으면 

<font> </font> //더 이상 거꾸로 갈 수 없으므로 아무 표시도 하지 않습니다.

<?}else{?> //block이 1보다 크다면

<font size=2><a href="/yw/buypaging.php?page=<?=$b_start_page-1?>&list=<?=$list?>">이전</a></font>

//이전 링크를 보여줍니다.

<?}


보기쉽게 코드버전으로 추가했습니다. 위와 같은 내용입니다.

1
2
3
4
5
6
7
8
9
10
11
if($block <=1){?>  //block이 1보다 작거나 같으면 
    <font> </font> //더 이상 거꾸로 갈 수 없으므로 아무 표시도 하지 않습니다.
 
<?}else{?> //block이 1보다 크다면
 
    <font size=2><a href="/yw/buypaging.php?page=<?=$b_start_page-1?>&list=<?=$list?>">이전</a></font>
 
    //이전 링크를 보여줍니다.
 
<?}
cs

이전 링크가 나타납니다.


더 이상 뒤로 갈게 없으니 이전링크를 나타내지 않습니다.



block은 우리가 처음에 $block = ceil($pageNum/$b_pageNum_list); 라고 구현을 해놓았었습니다.

block이 1이면  처음이라는 뜻이 되겠죠


하지만 1보다 크다면

<font size=2><a href="/yw/buypaging.php?page=<?=$b_start_page-1?>&list=<?=$list?>">이전</a></font>

이전 링크를 만들어 줍니다. 여기서 중요한 건 page=<?=$b_start_page-1?> 이 부분인데

$b_start_page 이거는 블럭의 시작 페이지변수 입니다.

즉 시작 페이지에서 1을 빼주면 이전 블럭으로 가게되는거죠.


여기서 시작페이지는 11입니다. 여기서 1을 빼면 10이 되겠죠?


보시면 10페이지에 위치되어 있습니다. 이런 식으로 처음과 끝에 1을 더하고 빼면서 block간 이동을 하게 됩니다.






이제 진짜인 페이징 번호를 구현하겠습니다.

 //$b_start_page를 $j의 초기값으로 설정 ; $b_end_page보다 작거나 같을때 까지 for문 돌리기 ; $j++하나씩 증가시키기

 for($j = $b_start_page; $j <=$b_end_page; $j++)

{

if($pageNum == $j) //pageNum 와 j 가 같으면 현재 페이지 이므로

{?>

<font size=2 color=red><?=$j?></font>//링크걸지 않고 그냥 현재페이지만 출력

<?}else{?> //서로 다르다면

              <font size=2><a href="/yw/buypaging.php?page=<?=$j?>&list=<?=$list?>"><?=$j?></a></font>

               // 현재 페이지를 제외한 나머지 페이지번호를 링크를 달아 출력하기

<?}

}





















보기쉽게 코드버전으로 추가했습니다. 위와 같은 내용입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//$b_start_page를 $j의 초기값으로 설정 ; $b_end_page보다 작거나 같을때 까지 for문 돌리기 ; $j++하나씩 증가시키기
 
 for($j = $b_start_page; $j <=$b_end_page; $j++)
{
    if($pageNum == $j) //pageNum  j  같으면 현재 페이지 이므로
    {?>
        <font size=2 color=red><?=$j?></font>//링크걸지 않고 그냥 현재페이지만 출력
 
    <?}else{?> //서로 다르다면
 
              <font size=2><a href="/yw/buypaging.php?page=<?=$j?>&list=<?=$list?>"><?=$j?></a></font>
 
               // 현재 페이지를 제외한 나머지 페이지번호를 링크를 달아 출력하기
 
    <?}
 
}
cs

for($j = $b_start_page; $j <=$b_end_page; $j++)

시작페이지인 $b_start_page와 마지막 페이지인 $b_end_page 만큼 for문이 돌아가도록 합니다.
block당 10개씩 돌아가게 하는거죠.
1~10까지 11~20까지 이런식으로요



if($pageNum == $j)

현재페이지인 $pageNum $j 가 같다면 현재 페이지를 의미하니



<font size=2 color=red><?=$j?></font>

$j를 빨간색으로 숫자를 표시하고  출력합니다.




현재페이지인 $pageNum  $j 가 다르다면 

 <font size=2><a href="/yw/buypaging.php?page=<?=$j?>&list=<?=$list?>"><?=$j?></a></font>

현재페이지를 제외한 다른 페이지 숫자에 링크를 걸어 이동할 수 있게 해줍니다. page= 이 부분에 $j를 넣어주면 3페이지를 클릭했을때 3이 들어가면서 그 페이지로 이동하게 되겠죠


이제 숫자 페이징 구현은 다 했습니다.

이제 다음 링크와 마지막 링크만 만들면 되겠네요


다음으로 가는 링크버튼을 만들어 보겠습니다.

이걸 만들기 전에 구해야될게 있는데 block의 총 갯수 입니다.


$total_block = ceil($total_page/$b_pageNum_list);


위에서 구했던 (총 페이지 갯수)에서 (블럭에 나타낼 페이지 번호 갯수)로 나누면 됩니다.

저는 왠지 모르겠지만 이게 이해가 그렇게 안됐습니다;;; 바본가봐

ceil을 해주면서 남는 페이지까지 포함해서 나타낼 수 있겠죠.






이제 다음 링크버튼 입니다.

 if($block >= $total_block){?>  //block 과 총 block 갯수와 값이 같다면

<font> </font>  // 맨 마지막 블럭이므로 다음링크버튼이 필요없어서 보여주지 않는다.

<?}else{?> //그게 아니라면

        <font size=2><a href="/yw/buypaging.php?page=<?=$b_end_page+1?>&list=<?=$list?>">다음</a></font>

//다음 링크버튼을 걸어 보여준다.

<?}











보기쉽게 코드버전으로 추가했습니다. 위와 같은 내용입니다.

1
2
3
4
5
6
7
8
9
10
11
 if($block >= $total_block){?>  //block 과 총 block 갯수와 값이 같다면
 
    <font> </font>  // 맨 마지막 블럭이므로 다음링크버튼이 필요없어서 보여주지 않는다.
 
<?}else{?> //그게 아니라면
 
        <font size=2><a href="/yw/buypaging.php?page=<?=$b_end_page+1?>&list=<?=$list?>">다음</a></font>
 
    //다음 링크버튼을 걸어 보여준다.
 
<?}
cs

이전 버튼과 같은 원리인데 다르다면 여기서는 page 변수에 +1을 더해주는 겁니다. 

<font size=2><a href="/yw/buypaging.php?page=<?=$b_end_page+1?>&list=<?=$list?>">다음</a></font>


$b_end_page 이거는 블럭의 마지막 페이지 변수였습니다. 거기서 +1을 해주면 다음 블럭의 시작 페이지 변수가 되겠죠

현재 마지막 페이지 10에 위치해 있습니다.



+1을 하면 11로 넘어가면서 두번째 블럭이로 이동합니다.




이제 마지막 링크버튼 입니다.


if($pageNum >= $total_page){?> //페이지 넘버와 총 페이지가 같다면

      <font size=2  color=red>마지막</font> 

//마지막 페이지이므로 링크없이 마지막만 빨간색으로 출력

<?}else{?> // 그게 아니라면

<font size=2><a href="/yw/buypaging.php?page=<?=$total_page?>&list=<?=$list?>">마지막</a></font>

//페이지변수를 total_page로 주어서 마지막으로 가는 링크버튼을 출력

<?}?>









보기쉽게 코드버전으로 추가했습니다. 위와 같은 내용입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
if($pageNum >= $total_page){?> //페이지 넘버와 총 페이지가 같다면
 
      <font size=2  color=red>마지막</font
 
    //마지막 페이지이므로 링크없이 마지막만 빨간색으로 출력
 
<?}else{?> // 그게 아니라면
 
    <font size=2><a href="/yw/buypaging.php?page=<?=$total_page?>&list=<?=$list?>">마지막</a></font>
 
    //페이지변수를 total_page로 주어서 마지막으로 가는 링크버튼을 출력
 
<?}?>
cs

$pageNum는 현재 페이지를 나타내고 이 변수가 total_page 변수와 같다는 것은 마지막 페이지라는 걸 의미합니다.

총 페이지 수와 마지막 페이지 수는 당연히 같겠죠? 

총 200페이지 책의 마지막 페이지 번호는 200페이지 일테니까요


$pageNum 와 $ total_page 이게 다르다면 마지막 페이지는 아니라는 의미이니

마지막 링크버튼을 나타내도록 합니다.

그래서 page= 에 <?=$total_page?> 를 넣어주게 되면 마지막 페이지로 넘어가게 됩니다.



마지막 링크버튼을 누르면

이처럼 링크없이 빨간색으로 마지막 글씨만 출력된다.


아 중요한게 하나 빠졌네요. 게시판 db에서 데이터를 가져올때 limit를 걸어주는 것입니다.

데이터를 전부 가져오고 50개씩 출력하는 건 데이터가 적을때는 상관없지만 

수십 수백만개 데이터가 있다면 전부 가져오는데 시간이 걸리기 때문에 속도도 느리고 사용자도 답답할 것입니다.


그래서 가져올때 전부 가져오지 않고 50개씩만 가져오게 하는 것입니다.

게시판을 다 만드시고 페이징만 남으셨다면 게시판db를 가져오는 것도 다 구현되어 있으실 것입니다.

그럼 그 쿼리 마지막에 limit $limit,$list 를 해주세요.

예를 들자면 select * from board limit $limit,$list 이런식으로요.

여기서 $limit는 시작점

(여기서 시작점은 글 번호가 아닌 list 페이지라고 볼 수 있겠네요. 50개씩 들어있는 페이지라고 보시면 될 것 같습니다.)

$list는 아시다시피 가져올 양입니다.



$list는 처음에 50개라고 정해놨었죠 그럼 $limit는

$limit = ($page - 1) * $list;


이걸로 구합니다. 여기서 주의할 점은 db에서는 0부터 시작한다는 점입니다.

출처

http://nolran.tistory.com/57

  1. //아래 예는 5개 가져오기  
  2. SELECT * FROM [TABLE NAME] LIMIT 5;  
  3.   
  4. // LIMIT 시작점, 갯수 (아래 예의 경우 5번째부터 10개 추출. 첫번째 파라미터는 0 부터 시작함!)  
  5. SELECT * FROM [TABLE NAME] LIMIT 4, 10;  



이렇게 페이징 구현을 마쳤습니다.

설명이 잘 됐으려나 모르겠지만 도움이 됐으면 좋겠네요.

처음으로 해보는 포스팅이라 문제점도 많을겁니다.

지적해주시면 감사하겠습니다.


마지막으로 페이징 부분 소스입니다.

클릭하시면 원본보기 가능합니다.




아무래도 보기 편한게 원본인거 같아서 캡쳐합니다.


밑에는 소스입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<!-- 페이징 그리기 -->
    <tr>
        <td height="30" align="center" valign="middle" colspan="50" style="border:1px #CCCCCC solid;">
<?
    $pageNum = ($_GET['page']) ? $_GET['page'] : 1;     //page : default - 1
    $list = ($_GET['list']) ? $_GET['list'] : 50//page : default - 50
 
 
    $b_pageNum_list = 10//블럭에 나타낼 페이지 번호 갯수
    $block = ceil($pageNum/$b_pageNum_list); //현재 리스트의 블럭 구하기
    
 
    $b_start_page = ( ($block - 1* $b_pageNum_list ) + 1//현재 블럭에서 시작페이지 번호
    $b_end_page = $b_start_page + $b_pageNum_list - 1//현재 블럭에서 마지막 페이지 번호
 
    $total_page =  ceil($buyTotalCount/$list); //총 페이지 수
 
    if ($b_end_page > $total_page
        $b_end_page = $total_page;
    
 
    if($pageNum <= 1){?>
        <font size=2  color=red>처음</font>
        <?}else{?>
            <font size=2><a href="/yw/buypaging.php?year=<?=$year?>&month=<?=$month?>&day=<?=$day?>&page=&list=<?=$list?>">처음</a></font>
        <?}
 
 
 
    if($block <=1){?>
        <font> </font>
    <?}else{?>
        <font size=2><a href="/yw/buypaging.php?year=<?=$year?>&month=<?=$month?>&day=<?=$day?>&page=<?=$b_start_page-1?>&list=<?=$list?>">이전</a></font>
    <?}
 
        
 
 
 
    for($j = $b_start_page$j <=$b_end_page$j++)
    {
 
        if($pageNum == $j)
        {?>
            <font size=2 color=red><?=$j?></font>
        <?}
        else{?>
            <font size=2><a href="/yw/buypaging.php?year=<?=$year?>&month=<?=$month?>&day=<?=$day?>&page=<?=$j?>&list=<?=$list?>"><?=$j?></a></font>
            <?
          }                
 
    }
 
 
 
    $total_block = ceil($total_page/$b_pageNum_list);
 
    if($block >= $total_block){?>
    <font> </font>
    <?}else{?>    
        <font size=2><a href="/yw/buypaging.php?year=<?=$year?>&month=<?=$month?>&day=<?=$day?>&page=<?=$b_end_page+1?>&list=<?=$list?>">다음</a></font>
    <?}
 
 
 
    if($pageNum >= $total_page){?>
 
            <font size=2 color=red>마지막</font>
        
        <?}else{?>
            <font size=2><a href="/yw/buypaging.php?year=<?=$year?>&month=<?=$month?>&day=<?=$day?>&page=<?=$total_page?>&list=<?=$list?>">마지막</a></font>
 
        <?}
    ?>
    </td>
 
    </tr>
cs




'지식메모 > PHP' 카테고리의 다른 글

php 문자열 공백제거하기  (1) 2013.11.13
문자열 분리하기 다루기  (0) 2013.10.08
게시판 글 번호 구하기  (2) 2013.08.13
게시판 페이징 구현하기  (44) 2013.08.12
날짜 출력 함수 사용하기  (0) 2013.08.05
문자열 잘라쓰기  (0) 2013.08.05
  1. 이전 댓글 더보기
  2. 이승진 2014.03.07 11:28

    asp에 ceil함수가 없어서 올림하는 값때문에 그런거였네요 round함수로 어찌 해결은 했는데 이젠 아예 1 2 3 표시가 안되네요 뭔가 로직의 오류가 있는거 같은데 잘 모르겠네요..
    http://assassinloki.woobi.co.kr/member.txt
    전체 소스코드인데 pageNum이 안나오는것도 그렇고 다음 이전 처음 마지막 눌렀을 때 빨간색으로 글씨나오고 링크안걸리고 이런것도 좀 안되네요ㅠ

    • yonoo88 2014.03.07 11:39 신고

      asp는 저도 처음 보는거라 잘 모르겠네요..

      도움을 못 드려서 죄송합니다.

  3. pjm 2014.08.08 13:15

    감사합니다! 덕분에 많이 배워 갑니다!!

  4. pjm 2014.08.08 17:02

    포스팅 하신 게시판에 게시물 출력부분 반복문좀 알수있을까요?

    • yonoo88 2014.08.08 17:40 신고

      마지막 전체소스가 전부이네요. 이것도 한지가 오래되서 가물가물하군요.

      http://www.itmembers.net/board/zboard.php?id=php&page=2&select_arrange=headnum&desc=asc&category=&sn=off&ss=on&sc=on&keyword=&sn1=&divpage=1

      혹시나 위 링크가 도움이 되실까요

  5. pjm 2014.08.08 20:03

    포문에 조건을 어떻게 줘야 하는지 헷갈렸는데 잘 해결 됐습니다^^감사합니다~

  6. 라울 2014.10.12 15:18

    처음 하는건데 보고 따라하니까 정말 잘됐네요 깔끔하고 필요한 내용만 있구요
    감사합니다.
    그리고 위에 이승진 님처럼 저도 페이지가 -9 이렇게 나왔었는데
    작성자님 수식 잘못 된게 아니었구요. 저는 mysql 이랑 mysqli 를 혼용 했더니 그런 일이 발생하더군요.
    mysql 로 통일하니 잘 됩니다. 해결되셨으면 좋겠네요.

    • yonoo88 2014.10.12 15:26 신고

      감사합니다. 도움이 되셨다니 다행이네요. 더 헷갈리진 않을까 싶었는데..
      꽤 지난 내용이라 다 까먹어서인지
      지금 다시 보니 오히려 제가 이해가 안되네요 ㅋㅋㅋ;;



  7. 익명 2015.01.31 18:23

    정말감사합니다 프로젝트 진행중이엿는데 덕분에 해결하였습니다 제가 머리가 나쁜건지 도통이해가 안되네요 ㅠ

    • yonoo88 2015.01.31 18:38 신고

      도움이 되었다니 다행이네요. 저도 지금 다시보면 또 헷갈립니다ㅋㅋ 이게 두뇌회전이 잘 되야하더군요

  8. 이프로 2015.02.09 11:54

    감사합니다. 자세한 설명과 정확한 설명 덕에 잘 배우고 갑니다 ㅠㅠ 제가 딱 원하던 거였어요~

  9. 임은지 2015.02.26 15:08

    완전 초보인 학생인데요..
    소스를 참고하고 있는데 올려주신 소스를 제외하고 제가 따로 db에서 받아와야하는 변수가 뭐뭐인지좀 알려주세요ㅜㅜ
    예를 들어 total_page 같은 변수요!!

    • yonoo88 2015.02.26 16:05 신고

      total_page, total_count 가 필요하겠구요.

      가물가물하네요.. 이정도면 되지 않을까 싶어요.

      총 글 갯수를 구하고

      페이지마다 보여줄 글 개수를 db쿼리에서 limit를 걸어서 가져오면 될 듯 싶습니다.

      사용자마다 방식이 다 달라서 애매하네요

  10. 김기훈 2015.02.26 16:36

    고맙습니다~~ 도움이 많이 되었습니다. 잘 쓸게요~!

  11. suffix 2015.08.11 15:25

    정말 감사합니다. 쉽게 잘 설명되어있네요

  12. illiahi 2015.11.10 18:21

    제가 완전초보인데요 6번째 줄하고 16번째 페이지에서 에러가나는데요 16번째 페이지는 $buyTotalCount가 없어서 그러는데 알려주세요

    • yonoo88 2015.11.10 18:23 신고

      저도 오래되서 잘 기억이 나진 않지만 buyTotalCount 라면 게시글의 총 갯수인거 같아요.

      디비에서 게시글 총 개수를 구하시면 되지 않을까요..?

  13. illiahi 2015.11.10 18:39

    그러면 6번째 줄은요? 저거 $_GET[]이 안에 무슨값을 써줘야하나요?

    • yonoo88 2015.11.10 18:43 신고

      그건 아마 페이지 주소에서 가져오는 것 같습니다.

      가물가물하네요;

    • illiahi 2015.11.10 19:02

      알겠습니다 감사합니다

  14. kk 2015.11.11 19:34

    $limit = ($page - 1) * $list;여기에서 $page는 어디서 선언을 해주었나요? 그리고 왜 이렇게 하는지 알려주시면 감사하겠습니다.

    • yonoo88 2015.11.11 20:19 신고

      $page 는 주소에서 가져오게 되는데요. 즉 1페이지를 클릭하면 $page는 1이 되곘네요
      처음 이전 마지막 버튼이 구현된 부분의 a href 주소부분을 보시면
      &page=<?=$b_start_page-1 이런 부분을 볼 수 있으실겁니다.

      설명에 나와있듯이
      $limit = ($page - 1) * $list;
      이 수식은 DB에서 데이터를 가져올 때 어디서부터 가져오냐를 결정해주는 건데요

      $limit 가 0 이라면 DB에서 0번부터 데이터를 가져와라 시작점을 알려주는거죠.

      $list를 50으로 해주어 50개씩 가져와라 지정을 해주고
      $page 가 1 페이지라면 (1-1)*50 으로 $limit 가 0 이죠?

      그럼 DB쿼리가 select * from board limit $limit,$list
      이런 식이니까

      select * from board limit 0, 50 이렇게 됩니다.
      1페이지는 0번부터 50개의 게시글을 가져오게 되는거죠

      2페이지라면 (2-1)*50 = 50이니까
      2페이지는 50번 부터 50개의 게시글을 가져오게 되는거죠


      본문에는 딱 페이징을 위한 코드만 있는터라
      DB에서 쿼리를 가져오는 코드나 그외 필요한 코드는 따로 작성하셔야 합니다.

  15. 하하 2016.02.19 14:36

    ㅠㅠ... 이코드를 jsp body에 넣으면 되나요?
    <? ?> 이거 인식을 못하구 있어용 ..ㅠㅠ

  16. 룰루 2016.03.08 17:32

    설명이 정말 잘 돼 있어서 정말 좋아요!!! 고맙습니다.

  17. 비버 2016.03.09 18:42

    정말 도움이됏어요ㅕ ㅜㅜ.그런데 전 ㅜ.ㅜ 리스트번호랑 정작 글목록들이따로 놀아요 ㅜㅜ.
    5개씩 나와야 되는데 전체가 주르륵 ㅜ.ㅜ

    • yonoo88 2016.03.09 18:43 신고

      감사합니다. 잘못된 부분을 차분히 살펴보시면 해결될 거에요!

  18. ㅇㅇ 2016.08.17 15:03

    기존에 페이징번호없이 아래로 쭉내려가는 게시판 글목록이 있는데 어떻게 해야할까요? 저기 올리신 링크는 글삭제 됬다고 나오네요

    • yonoo88 2016.08.17 15:23 신고

      링크제보 감사합니다. 아래로 내리는 방식은 저도 자세힌 모르지만 페이지 번호클릭대신 아래로 스크롤시 그 다음 글 목록을 화면에 표시하는 방식으로 하지 않을까요?

  19. ㅈㄱㅎ 2017.03.07 23:26

    엄청 설명이 자세히 되있네요ㅎ 제가 본것중에 코드리뷰 가장 세세히 해준것같아요 도움이 많이 됐습니다.

    • yonoo88 2017.03.15 18:48 신고

      감사합니다. 저도 찾아보면서 왜 이런부분은 자세히 설명하지 않았을까 하는 경우가 많아 최대한 자세히 써보려고 했네요

  20. 미스터소소 2018.03.21 09:15 신고

    설명이 워낙 잘 되어있어 asp로 구현하는데도 정말 많은 도움이 되었습니다. 감사합니다!

  21. 김영국 2019.02.02 12:45

    와우 정말 감사합니다. 덕분에 처음, 이전, 다음, 마지막 버튼 만들고 페이징을 10개씩 보여줄 수 있게됐어요.
    너무 복잡해서 하루 웬 종일 걸리긴 했는데.. 해낸게 어디에요..ㅋㅋ
    감사합니다.
    처음에 각 if문에 앵커태그로 $page에 값을 넘겨줄 때 이게 참..헷갈렸어요. $page가 아니라 $pageNum 인데 왜 자꾸
    $page에 넘겨주는거지!! 이러고 있었는데.. 다 해결하고 다시 보니까 맨 첫 번째부터....$page가 $pageNum으로 대입되도록
    잘 설명이 되어있었네요....아무리 찾아봐도 $page가 어딨는지 안보였었는데.. 거참..

+ Recent posts