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

본문 바로가기
 

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

페이지 정보

작성자 차동박 이름으로 검색 댓글 0건 조회 20,833회 작성일 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 ("
[이전 10개]/a>
");
}


$j=(($nowlevel*10)-9);
if ($lastlevel==$nowlevel)
{
for ( $j; $j <= $totalpage;$j++ )
{
if ($j == $nowpage)
{
echo (" $j "); // 현재보고 있는 페이지
}
else
{
echo ("
[$j] ");
// [1] [2] [3] 이런것을 만들어준다.
// 현재레벨이 2라면 [11] [12] [13] 을 만들어준다.
}
}
}
else
{
for ($j;$j <= (($nextlevel-1)*10);$j++ ){
if ($j == $nowpage)
{
echo (" $j ");
}
else
{
echo (" [$j] ");
}

}

}

if ($nextlevel =< $lastlevel)
{
$nextlevelpage = (($nextlevel*10)-9);
echo (" [다음 10개] ");
}


이와 같이 하시면 됩니다.
헉 참 어렵습니다.
헷갈리구욤.
먼저 페이지로 구분하고 10페이지 단위로 레벨로 구분해서 코딩햇읍니다.
처음에는 에러 테스트하기도 어렵습니다.
하지만 그냥 마구잡이로 코딩해 본것인데...
아직 다시 봐도 머리 아픕니다.

여러분들도 이 코드를 가지고 한번 기존에 게시판에 번호단위로 적어보세요.
에궁 에궁......보기 쉽게 할라구
테이블 및 태그는 제외시켰읍니다.
코드가 제대로 작동하는지도 테스트 해보시구요...
참 코딩 중에 잘 모르겟으면 무조건 값들을 다 뿌려보세요.
echo " $total : $startpage : $beforelevel ";
이런식으로 쭉 해보면 나중에는 알 수 있을 것입니다.
헤헤헤
아궁 머리 아프다 나덩...

모든 게시판의 글을 한꺼번에 다 쿼리해와서 하는 부분입니다.
지금 코딩을 한다면 리미트로 뽑아오는 갯수를 지정하고
data_seek 함수로 데이터를 이동시키거나 id번호 다음부터 쿼리를 하게
만들어 사용할 것입니다.
처음부터 너무 욕심 내지 마시고 첨에는 다 뽑아다 해보시구요.
어느 정도 익숙해지면 쿼리문을 이용해서 쿼리해온 결과값을 다이어트 할
수 있도록 해보세요 그래야 나중에 데이터가 엄청나게
커질 경우에도 견뎌낼수 있고 엄청 빠른 속도를 낼 수 있읍니다.

헤헤헤 다음에는 그런 소스를 올려드리져...
 
[이 게시물은 human님에 의해 2007-05-14 17:57:42 bulk2에서 복사 됨] [이 게시물은 human님에 의해 2007-05-15 09:09:28 bulk3에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.

Total 243건 3 페이지
MySQL Tip 목록
번호 제목 글쓴이 조회 날짜
207 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 21011 01-01
206 no_profile 차동박 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 20972 07-08
205 차동박 이름으로 검색 20962 08-07
204 차동박 이름으로 검색 20960 08-07
열람중 차동박 이름으로 검색 20834 08-07
202 차동박 이름으로 검색 20661 08-07
201 no_profile 차동박 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 20376 05-06
200 no_profile 차동박 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 20274 10-01
199 차동박 이름으로 검색 20254 12-27
198 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 20237 11-06
197 차동박 이름으로 검색 20221 07-20
196 차동박 이름으로 검색 20154 09-02
195 no_profile 차동박 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 20116 01-12
194 차동박 이름으로 검색 20101 03-05
193 차동박 이름으로 검색 20082 08-07
192 차동박 이름으로 검색 19953 08-07
191 차동박 이름으로 검색 19789 08-07
190 차동박 이름으로 검색 19787 10-19
게시물 검색