0
 33   4   1
  View Articles

Name  
   손병목  (2002-10-29 00:10:34, Hit : 53506, Vote : 2212)
Homepage  
   http://www.itmembers.net
Subject  
   게시판 글 목록 보기 기능(2) list.php 소스코딩

다음 시간부터 소스를 조각조각 자세하게 설명드리도록 하겠습니다.
이번 시간에는 일단 다음과 같이 입력합니다.

지난 시간에 입력한 HTML 코드 사이사이에 PHP 코드를 덧붙이는 것이니만큼 정확하게 입력해야 합니다.

왠만큼 주석을 달아놓았으니, 다음 시간 전이라도 최대한 눈여겨 봐주세요. 아마도 그리 이해가 되지 않는 곳은 없으리라 생각하는데....^^

  1. <?
  2. //DB에 연결하는 부분입니다. 항상 반복되는 부분이니 꼭 암기!!!
  3. mysql_connect("localhost", "phpbbs", "phpbbs") or die (mysql_error());
  4. mysql_select_db("itmembers");
  5.  
  6. //게시판 목록보기에 필요한 각종 변수 초기값을 설정합니다.
  7. $tablename="bbs"; //테이블 이름
  8. if($page == '') $page = 1; //페이지 번호가 없으면 1
  9. $list_num = 10; //한 페이지에 보여줄 목록 갯수
  10. $page_num = 10; //한 화면에 보여줄 페이지 링크(묶음) 갯수
  11. $offset = $list_num*($page-1); //한 페이지의 시작 글 번호(listnum 수만큼 나누었을 때 시작하는 글의 번호)
  12.  
  13. //전체 글 수를 구합니다. (쿼리문을 사용하여 결과를 배열로 저장하는 일반적 인 방법)
  14. $query="select count(*) from $tablename"; // SQL 쿼리문을 문자열 변수에 일단 저장하고
  15. $result=mysql_query($query) or die (mysql_error()); // 위의 쿼리문을 실제로 실행하여 결과를 result에 대입
  16. $row=mysql_fetch_row($result); //위 결과 값을 하나하나 배열로 저장합니다 .
  17. $total_no=$row[0]; //배열의 첫번째 요소의 값, 즉 테이블의 전체 글 수를 저장합니다.
  18.  
  19. //전체 페이지 수와 현재 글 번호를 구합니다.
  20. $total_page=ceil($total_no/$list_num); // 전체글수를 페이지당글수로 나눈 값의 올림 값을 구합니다.
  21. $cur_num=$total_no - $list_num*($page-1); //현재 글번호
  22.  
  23. //bbs테이블에서 목록을 가져옵니다. (위의 쿼리문 사용예와 비슷합니다 .)
  24. $query="select * from $tablename order by number desc limit $offset, $list_num"; // SQL 쿼리문
  25. $result=mysql_query($query) or die (mysql_error()); // 쿼리문을 실행 결과
  26. //쿼리 결과를 하나씩 불러와 실제 HTML에 나타내는 것은 HTML 문 중간에 삽입합니다.
  27. ?>
  28.  
  29. <html>
  30. <head>
  31. <meta http-equiv=content-type content=text/html; charset=euc-kr>
  32. <title>글목록보기</title>
  33. <STYLE TYPE=text/css>
  34. BODY,TD,SELECT,input,DIV,form,TEXTAREA,center,option,pre,blockquote {font-family:굴림;font-size:9pt;color:#555555;}
  35. A:link    {color:black;text-decoration:none;}
  36. A:visited {color:black;text-decoration:none;}
  37. A:active  {color:black;text-decoration:none;}
  38. A:hover  {color:gray;text-decoration:none;}
  39. </STYLE>
  40. </head>
  41. <body background=./images/body_bg.gif>
  42. <img src=./images/maintitle.gif>
  43. <table border=1 cellspacing=0 width=680 bordercolordark=white bordercolorlight=#999999>
  44.     <tr>
  45.         <td width=30 bgcolor=#CCCCCC>
  46.             <p align=center>no</p>
  47.         </td>
  48.         <td bgcolor=#CCCCCC width=490>
  49.             <p align=center>subject</p>
  50.         </td>
  51.         <td width=60 bgcolor=#CCCCCC>
  52.             <p align=center>name</p>
  53.         </td>
  54.         <td width=70 bgcolor=#CCCCCC>
  55.             <p align=center>date</p>
  56.         </td>
  57.         <td width=30 bgcolor=#CCCCCC>
  58.             <p align=center>hit</p>
  59.         </td>
  60.     </tr>
  61.  
  62. <?
  63. while ($array=mysql_fetch_array($result)) {
  64.  
  65.         $date=date("Y/m/d", $array[writetime]); //글쓴시각을 Y/m/d 형식에 맞게 문자열로 바꿉니다 .
  66.  
  67.         echo "
  68.     <tr>
  69.         <td width=30>
  70.             <p align=center>$cur_num</p>
  71.         </td>
  72.         <td width=490>
  73.             <p>$array[subject]< /p>
  74.         </td>
  75.         <td width=60>
  76.             <p align=center>$array[name]</p>
  77.         </td>
  78.         <td width=70>
  79.             <p align=center>$date</p>
  80.         </td>
  81.         <td width=30>
  82.             <p align=center>$array[count]</p>
  83.         </td>
  84.     </tr> ";
  85.  
  86.         $cur_num --;
  87.  
  88. }
  89. ?>
  90.     <tr>
  91.         <td width=100% colspan=5>
  92.  
  93. <?
  94. //여기서부터 각종 페이지 링크
  95. //먼저, 한 화면에 보이는 블록($page_num 기본값 이상일 때 블록으로 나뉘어짐 )
  96. $total_block=ceil($total_page/$page_num);
  97. $block=ceil($page/$page_num); //현재 블록
  98.  
  99. $first=($block-1)*$page_num; // 페이지 블록이 시작하는 첫 페이지
  100. $last=$block*$page_num; //페이지 블록의 끝 페이지
  101.  
  102. if($block >= $total_block) {
  103.         $last=$total_page;
  104. }
  105.  
  106. echo "
  107.                 &nbs p;       <p align=center>";
  108. //[처음][*개앞]
  109. if($block > 1) {
  110.         $prev=$first-1;
  111.         echo "<a href='list.php?page=1'>[처음 ]</a>&nbsp; ";
  112.         echo "<a href='list.php?page=$prev'>[$page_num 개 앞]</a>";
  113. }
  114.  
  115. //[이전]
  116. if($page > 1) {
  117.         $go_page=$page-1;
  118.         echo "  <a href='list.php?page=$go_page'>[이전 ]</a>&nbsp;       ";
  119. }
  120.  
  121. //페이지 링크
  122. for ($page_link=$first+1;$page_link<=$last;$page_link++) {
  123.         if($page_link==$page) {
  124.                 echo "<font color=green><b>$page_link</b></font>";
  125.         }
  126.         else {
  127.                 echo "<a href='list.php?page=$page_link'>[$page_link]</a>";
  128.         }
  129. }
  130.  
  131. //[다음]
  132. if($total_page > $page) {
  133.         $go_page=$page+1;
  134.         echo "&nbsp;<a href='list.php?page=$go_page'>[다음]</a>";
  135. }
  136.  
  137. //[*개뒤][마지막]
  138. if($block < $total_block) {
  139.         $next=$last+1;
  140.         echo "<a href='list.php?page=$netxt'>[$page_num 개 뒤]</a>&nbsp;";
  141.         echo "<a href='list.php?page=$total_page'>[마지막]</a></p>";
  142. }
  143.  
  144. ?>
  145.         </td>
  146.     </tr>
  147.     <tr>
  148.         <td width=100% colspan=5>
  149.             <p align=center><a href='write.php'>[글쓰기]</a></p>
  150.         </td>
  151.     </tr>
  152. </table>
  153. </body>
  154. </html>

이상 동주아빠 손병목이었습니다.


Prev
   게시판 글 목록 보기 기능(3) list.php 설명(上)

손병목
Next
   게시판 글 목록 보기 기능(1) list.php 화면 디자인

손병목


Copyright 1999-2022 Zeroboard / skin by Zetyx