게시판에서 페이지 별로 나눈는 법 소스 분석 > MySQL Tip

본문 바로가기
 

게시판에서 페이지 별로 나눈는 법 소스 분석

페이지 정보

작성자 이름으로 검색 댓글 0건 조회 17,443회 작성일 05-08-07 18:34

본문



게시판에서 페이지 별로 나눈는 법 소스 분석
 

글쓴이 : 강동길


저작권자 이메일 :

webmaster@koreaphp.co.kr


출처 :

koreaphp.co.kr


작성일 : 2002/04/16 17:50:13


 


글내용 본 내용은 HTML 형식으로
쓰여졌습니다. 소스를 보시려면

버튼을 누르세요.




본 소스는 제가 최초로 2주만에 게시판을 짤때

사용한 페이지 분류 소스입니다.

자신의 소스에 집어넣고 해보세요.



더 좋은 페이지 정리 소스도 많읍니다.

그런데 이 소스를 올린 이유는 제가 완존 초보일때 혼자 마구

궁리하다가 만든 것이므로 여러분들이 조금 더 이해하기

좋을 것이라고 생각합니다.



참고로 php하신지 2주 된분이 이 소스가 이해 안되시면 공부를 안하시는분

이라고 생각하시기 바랍니다.



소스를 일부분 지우고 하다 보니 { } 부분이나 ; 이런것들이 빠질 수 있음을

알려드립니다.





1. 디비 연결단계

$connect =
mysql_connect("$mysqlhost","$mysqlid","$mysqlpassword");

mysql_select_db("$mysqldbname",$connect);



2. 특정조건에 따라 검색하는 단계

현재는 쿼리문이 없는 상태입니다.

$result =mysql_query($que,$connect) or
message(mysql_error());





3. 아래 코드는 게시판에서

1...................................

2..................................

3..................................

4..................................

5..................................

6..................................

7..................................

8..................................

9..................................

10..................................

[이전페이지] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음페이지]

를 보여주기 위한 과정입니다.









$total = mysql_num_rows($result); // 전체 글수 구하기

$totalnum = $total;

$totalpage= (($totalnum-1) / $pagemax)+1; // 전체 페이지
구하기

$totalpage = (int)$totalpage;

if ($total < 11) // 게시판의 총 글 갯수가 10개이하이면 1페이지로 인식


{

$totalpage = 1;

}

$nowpage= $pagenum;



echo("

검색된 총 $totalnum 개글 : $nowpage / $totalpage 페이지

");







// 주로 게시판 젤 위에 적히는 글이죠..



// pagemax는 10페이지를 기준으로 합니다.



$startnumber = ((($pagenum-1)*($pagemax))+1);

$endnumber = ($startnumber + ($pagemax-1));

if ($endnumber > $total)

{

$endnumber = $total ;

}

$i = $startnumber; // for 문 안에서 현재 뿌려지는 넘버

for ($i; $i <= $endnumber;$i++)

{

// 디비에서 자신이 뽑고자 하는 내용을 뽑는다.

// 페이지 넘버는 1부터이므로 $i 값은 1부터 시작하므로 값을 뽑아올때

// $i 값 보다 1 작은 값을 불러온다.



$id = mysql_result($result,$i-1,"id");

$name = mysql_result($result,$i-1,"name");

$mail = mysql_result($result,$i-1,"mail");

$subject = mysql_result($result,$i-1,"subject");


$readnum = mysql_result($result,$i-1,"readnum");




echo ("

$id : $name : $mail : $subject : $readnum

");

}

// 자신이 뿌려주고 싶은 양식대로 뿌린다.



// [1][2] 이부분이 페이지이구 [1]-[10]까지가 1레벨입니다.



//////////////////// 10페이지씩 구분한다. 레벨은 1부터 시작한다.

$lastlevel = (int)(($totalpage-1) / 10) + 1 ;




// [55] 이게 젤 마지막 페이지라면 [다음]이 몇번째 생기나를 알아보는 부분입니다.



// 현재페이지의 레벨을 구한다.

$nowlevel = (int)(($nowpage - 1) / 10) + 1 ;

if ($nowlevel == 0)

{

$nowlevel = 1;

}



$beforelevel = $nowlevel - 1 ;

$nextlevel = $nowlevel + 1 ;



if ($nowlevel != 1) {

$beforelevelpage = (($beforelevel*10)-9);

echo ("

href='list.php3?id=$tablename&pagenum=$beforelevelpage'>[이전
10개]/a>

");

}





$j=(($nowlevel*10)-9);

if ($lastlevel==$nowlevel)

{

for ( $j; $j <= $totalpage;$j++ )

{

if ($j == $nowpage)

{

echo (" $j "); // 현재보고 있는 페이지

}

else

{

echo (" href='list.php3?id=$tablename&pagenum=$j'>[$j] ");

// [1] [2] [3] 이런것을 만들어준다.

// 현재레벨이 2라면 [11] [12] [13] 을 만들어준다.

}

}

}

else

{

for ($j;$j <= (($nextlevel-1)*10);$j++ ){

if ($j == $nowpage)

{

echo (" $j ");

}

else

{

echo (" href='list.php3?id=$tablename&pagenum=$j'>[$j] ");

}



}



}



if ($nextlevel =< $lastlevel)

{

$nextlevelpage = (($nextlevel*10)-9);

echo (" href='list.php3?id=$tablename&pagenum=$nextlevelpage&mode=search&keyword=$keyword&keykind=$keykind'> [다음
10개] ");

}





이와 같이 하시면 됩니다.

헉 참 어렵습니다.

헷갈리구욤.

먼저 페이지로 구분하고 10페이지 단위로 레벨로 구분해서 코딩햇읍니다.

처음에는 에러 테스트하기도 어렵습니다.

하지만 그냥 마구잡이로 코딩해 본것인데...

아직 다시 봐도 머리 아픕니다.



여러분들도 이 코드를 가지고 한번 기존에 게시판에 번호단위로 적어보세요.

에궁 에궁......보기 쉽게 할라구

테이블 및 태그는 제외시켰읍니다.

코드가 제대로 작동하는지도 테스트 해보시구요...

참 코딩 중에 잘 모르겟으면 무조건 값들을 다 뿌려보세요.

echo " $total : $startpage : $beforelevel ";

이런식으로 쭉 해보면 나중에는 알 수 있을 것입니다.

헤헤헤

아궁 머리 아프다 나덩...



모든 게시판의 글을 한꺼번에 다 쿼리해와서 하는 부분입니다.

지금 코딩을 한다면 리미트로 뽑아오는 갯수를 지정하고

data_seek 함수로 데이터를 이동시키거나 id번호 다음부터 쿼리를 하게

만들어 사용할 것입니다.

처음부터 너무 욕심 내지 마시고 첨에는 다 뽑아다 해보시구요.

어느 정도 익숙해지면 쿼리문을 이용해서 쿼리해온 결과값을 다이어트 할

수 있도록 해보세요 그래야 나중에 데이터가 엄청나게

커질 경우에도 견뎌낼수 있고 엄청 빠른 속도를 낼 수 있읍니다.



헤헤헤 다음에는 그런 소스를 올려드리져...

 


댓글목록

등록된 댓글이 없습니다.

Total 243건 7 페이지
MySQL Tip 목록
번호 제목 글쓴이 조회 날짜
135 no_profile 차동박 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17721 05-17
134 차동박 이름으로 검색 17697 10-28
133 차동박 이름으로 검색 17658 10-28
132 차동박 이름으로 검색 17583 09-21
131 차동박 이름으로 검색 17534 02-06
130 차동박 이름으로 검색 17528 10-27
129 차동박 이름으로 검색 17519 02-06
128 차동박 이름으로 검색 17516 10-11
127 차동박 이름으로 검색 17477 08-07
126 차동박 이름으로 검색 17466 11-24
125 차동박 이름으로 검색 17460 08-07
열람중 이름으로 검색 17444 08-07
123 차동박 이름으로 검색 17438 10-11
122 차동박 이름으로 검색 17426 09-13
121 차동박 이름으로 검색 17424 02-08
120 차동박 이름으로 검색 17422 03-05
119 차동박 이름으로 검색 17404 08-07
118 차동박 이름으로 검색 17369 08-07
게시물 검색