게시판에서 페이지 별로 나눈는 법 소스 분석
페이지 정보
작성자 차동박 이름으로 검색 댓글 0건 조회 21,436회 작성일 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번호 다음부터 쿼리를 하게 만들어 사용할 것입니다. 처음부터 너무 욕심 내지 마시고 첨에는 다 뽑아다 해보시구요. 어느 정도 익숙해지면 쿼리문을 이용해서 쿼리해온 결과값을 다이어트 할 수 있도록 해보세요 그래야 나중에 데이터가 엄청나게 커질 경우에도 견뎌낼수 있고 엄청 빠른 속도를 낼 수 있읍니다. 헤헤헤 다음에는 그런 소스를 올려드리져... |
댓글목록
등록된 댓글이 없습니다.