• 따뜻한 부모가 될 수 있도록 돕습니다. 현명한 학부모가 될 수 있도록 돕습니다.
  • 글도 쓰고 강연도 합니다.
  • 제 트위터는 @itmembers, 페이스북은 www.facebook.com/itmembers입니다.
  • 네이버 블로그는 charen.kr입니다. 최신 글은 네이버 블로그에서 보실 수 있습니다.
  • 요즘 중국차에 푹 빠져 있는데, 중국차에 대한 얘기도 네이버 블로그에서 전해드립니다.
  • 게시판 글 내용 보기 기능(3) view.php 설명

    Posted on : 2002-11-24 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1

    태그:, , , , ,

    0

    비교적 복잡한 목록 보기를 이미 실습한 상태이기 때문에 글 내용 보기 소스는
    한결 쉽게 이해가 될 겁니다.

    1. //테이블에서 글을 가져옵니다.
    2. $query = "select * from $tablename where number=’$number‘";
      // 글 번호를 가지고 조회를 합니다.
    3. $result = mysql_query($query) or die (mysql_error());
    4. $array = mysql_fetch_array($result);

    10행의 SQL 문에서 중요한 것은 where number=’$number‘입니다.
    목록
    보기에서 해당 글 제목을 클릭했을 때, 현재의 list.php가 실행되니다.
    이 때
    글 번호와 페이지 번호를 함께 넘어왔습니다.(금시초문이라구요? 그럼 바로 전 강좌를
    다시 보시기 바랍니다.)
    글 번호를 사용하여 글 번호에 해당되는 레코드를 불러오는
    SQL 쿼리문입니다.

    1. //백슬래쉬 제거, 특수문자 변환(HTML용), 개행(<br>)처리 등
    2. $array[name] = stripslashes($array[name]);
    3. $array[subject] = stripslashes($array[subject]);
    4. $array[memo] = stripslashes($array[memo]);

    예전에 글 입력 부분 실습할 때,
    $name = addslashes($name);
    이렇게
    했습니다. (자세한 설명은 ’입력한
    글 DB에 저장하기(2)
    ‘ 강좌를 참조하세요)

    입력할 때 인용부호, 역슬래시 등에 역슬래시 기호를 첨가하여 저장하였습니다.

    15행부터는, 그렇게 저장된 문자열을 다시 불러낼 때 역슬래시 기호를 제거하고 저장하는
    역할을 합니다.

    1. $array[subject] = htmlspecialchars($array[subject]);
    2. $array[memo] = htmlspecialchars($array[memo]);

    19~20행은 문자열 중에서 특수 문자를 HTML로 표현하기 위한 HTML 문자로 치환하는
    역할을 합니다.
    예를 들어, <&lt; 로, >
    &gt; 로, 작은 따옴표인 &quot; 로 바꿉니다.

    1. $array[memo] = nl2br($array[memo]);

    22행은 문자열 중에서 엔터 키가 입력된 부분을 <br> 문자로 바꾸는
    역할을 합니다. 그래야 웹 상에서 제대로 보이니까요.

    이렇게 9행부터 22행까지는, 게시판 프로그램에서 글을 보여주는 부분에서 꼭
    필요한 기능들입니다.

    1. // 조회수 카운터 증가
    2. $query = "update $tablename set count = count + 1 where number=’$number‘";
    3. mysql_query($query);

    25행은 현재의 count 필드의 값에 1을 더하는 쿼리문입니다.

    1. <p><?
      echo $array[name]; ?>
      </p>

    58행은 설명 안해도 되죠? 이름을 출력합니다. 64, 72, 80, 88, 96행도 마찬가지입니다.

    1. <p
      align="center"><a href="list.php?page=<? echo $page;
      ?>">
      [목록]</a> &nbsp;<a href="write.php">[쓰기]</a>
      &nbsp;<a href="modify.php?number=<? echo $number; ?>&page=<?
      echo $page; ?>">[수정]</a> &nbsp;<a href="delete.php?number=<?
      echo $number; ?>&page=<? echo $page; ?>">[삭제]</a></p>

    마지막으로 100행을 보면,
    [목록]을 클릭했을 때 list.php 페이지로 이동하면서
    현재의 페이지 번호도 함께 가져가는 것을 알 수 있습니다.
    [수정],[삭제]를 클릭하면
    현재 글 번호와 페이지 번호를 함께 가져갑니다. 수정과 삭제를 위한 modify.php,
    delete.php 등은 아직 안 만들었으니 이걸 클릭하면 당연히 오류가 나겠죠…

    오랜만에 몇 개의 강좌를 한꺼번에 올리느라 시간 가는 줄 몰랐습니다.
    이제
    슬슬 졸리네요.
    이상, 동주아빠 손병목이었습니다.

    게시판 글 내용 보기 기능(2) view.php 소스

    Posted on : 2002-11-24 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1

    태그:, , , , ,

    0

    지난 시간에 만든 HTML 소스에 프로그램을 입혔습니다.

    설명은 다음 시간에 하는데, 아래 파란 색 부분을 중심으로 설명합니다.
    이전
    실습 내용을 이해하셨다면, 아래 파란 색 부분만 주의깊게 보시면 될 겁니다.


    1. <?
    2. //DB에 연결하는 부분입니다. 항상 반복되는 부분이니 꼭 암기!!!
    3. mysql_connect("localhost", "phpbbs", "phpbbs")
      or die (mysql_error());
    4. mysql_select_db("itmembers");
    5.  
    6. //변수 설정합니다.
    7. $tablename="bbs"; //테이블 이름
    8.  
    9. //테이블에서 글을 가져옵니다.
    10. $query = "select * from $tablename where number=’$number‘";
      // 글 번호를 가지고 조회를 합니다.
    11. $result = mysql_query($query) or die (mysql_error());
    12. $array = mysql_fetch_array($result);
    13.  
    14. //백슬래쉬 제거, 특수문자 변환(HTML용), 개행(<br>)처리 등
    15. $array[name] = stripslashes($array[name]);
    16. $array[subject] = stripslashes($array[subject]);
    17. $array[memo] = stripslashes($array[memo]);
    18.  
    19. $array[subject] = htmlspecialchars($array[subject]);
    20. $array[memo] = htmlspecialchars($array[memo]);
    21.  
    22. $array[memo] = nl2br($array[memo]);
    23.  
    24. // 조회수 카운터 증가
    25. $query = "update $tablename set count = count + 1 where number=’$number‘";
    26. mysql_query($query);
    27.  
    28. ?>
    29.  
    30. <html>
    31. <head>
    32. <title>PHP 게시판 프로젝트 – 보기</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 bgcolor=white background=./images/body_bg.gif>
    42. <img src=./images/maintitle.gif>
    43. <table border=0 cellspacing=1 cellpadding="3" width=670>
    44.         <tr>
    45.           <td align=center>
    46.           <font color=green><b>내용
      보기 화면입니다.</b></font>
    47.           </td>
    48.         </tr>
    49.     <tr>
    50.           <td bgcolor="#EAC3EA">
    51. <table border=0 cellspacing=1 cellpadding=0 width=670 bgcolor="white">
    52.         <tr>
    53.           <td width="100">
    54.             <p
      align="right"><b>이름 &nbsp;</b></p>
    55.  
    56.           </td>
    57.           <td width="400">
    58.                         <p><?
      echo $array[name]; ?>
      </p>
    59.           </td>
    60.           <td width="100">
    61.                         <p
      align="right"><b>조회수 &nbsp;</b></p>
    62.           </td>
    63.           <td>
    64.                         <p><?
      echo $array[count]; ?>
      </p>
    65.           </td>
    66.         </tr>
    67.                 <tr>
    68.           <td width="100">
    69.                         <p
      align="right"><b>전자우편 &nbsp;</b></p>
    70.           </td>
    71.           <td colspan="3">
    72.                         <p><?
      echo $array[email]; ?>
      </p>
    73.           </td>
    74.                 </tr>
    75.                 <tr>
    76.           <td width="100">
    77.                         <p
      align="right"><b>홈페이지 &nbsp;</b></p>
    78.           </td>
    79.           <td colspan="3">
    80.                         <p><?
      echo $array[homepage]; ?>
      </p>
    81.           </td>
    82.                 </tr>
    83.                 <tr>
    84.           <td width="100">
    85.                         <p
      align="right"><b>제목 &nbsp;</b></p>
    86.           </td>
    87.           <td colspan="3">
    88.                         <p><?
      echo $array[subject]; ?>
      </p>
    89.           </td>
    90.                 </tr>
    91.         <tr>
    92.           <td width="100">
    93.                         <p
      align="right"><b>내용 &nbsp;</b></p>
    94.           </td>
    95.           <td colspan="3">
    96.                         <p><?
      echo $array[memo]; ?>
      </p>
    97.           </td>
    98.         </tr>
    99. </table>
    100.             <p
      align="center"><a href="list.php?page=<? echo $page;
      ?>">
      [목록]</a> &nbsp;<a href="write.php">[쓰기]</a>
      &nbsp;<a href="modify.php?number=<? echo $number; ?>&page=<?
      echo $page; ?>">[수정]</a> &nbsp;<a href="delete.php?number=<?
      echo $number; ?>&page=<? echo $page; ?>">[삭제]</a></p>
    101.           </td>
    102.     </tr>
    103. </table>
    104. </body>
    105. </html>

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

    게시판 글 내용 보기 기능(1) view.php 디자인

    Posted on : 2002-11-24 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1

    태그:, , , , ,

    0

    이번 시간부터는 글 내용 보기 프로그램을 설명합니다.

    지난 시간까지 글을 쓰고(write.php, insert.php), 글 목록을 확인하는(list.php)
    기능까지 구현했습니다.
    이번 시간에는 글 목록에서 해당 글을 클릭했을 때 글
    내용을 보여 주는 프로그램(view.php)을 만듭니다.

    우선 글 목록 보기에서 글 제목을 클릭했을 때 글 내용을 보여주기 위해서는,
    지난 시간까지 실습했던 list.php 소스에서 다음과 같이 한 줄을 수정해야 합니다.

    list.php의 73행의 $array[subject]를,

    <a href=’view.php?page=$page&number=$array[number]‘>$array[subject]</a>
    와 같이 수정해야 합니다.

    글 제목을 클릭하면, view.php로 이동하면서 현재 목록 보기의 페이지 번호와
    해당 글의 글 번호를 가져가게 되는 겁니다.
    글 번호는 해당 글을 조회하기 위해
    필요한 것이고, 페이지 번호는 글 내용 보기 화면에서 다시 [목록] 버튼을 눌렀을
    때 페이지가 속한 목록을 보여주기 위해 가져가는 것입니다.(view.php를 보다가 보면
    저절로 이해가 될 겁니다.)

    그럼, 이제부터 view.php를 만들어 봅시다.

    우선 디자인부터 해야 겠죠.
    웹 에디터를 사용하여 다음과 같이 디자인해 봅시다.

    그러면 아래와 같은 소스가 만들어지겠죠… 에디터에 따라 조금씩 다르겠지만.

    1. <html>
    2. <head>
    3. <title>PHP 게시판 프로젝트 – 보기</title>
    4. <STYLE TYPE="text/css">
    5. BODY,TD,SELECT,input,DIV,form,TEXTAREA,center,option,pre,blockquote
      {font-family:굴림;font-size:9pt;color:#555555;}
    6. A:link    {color:black;text-decoration:none;}
    7. A:visited {color:black;text-decoration:none;}
    8. A:active  {color:black;text-decoration:none;}
    9. A:hover  {color:gray;text-decoration:none;}
    10. </STYLE>
    11. </head>
    12. <body bgcolor=white background=./images/body_bg.gif>
    13. <img src=./images/maintitle.gif>
    14. <table border=0 cellspacing=1 cellpadding="3" width=670>
    15.         <tr>
    16.           <td align=center>
    17.           <font color=green><b>내용
      보기 화면입니다.</b></font>
    18.           </td>
    19.         </tr>
    20.     <tr>
    21.           <td bgcolor="#EAC3EA">
    22. <table border=0 cellspacing=1 cellpadding=0 width=670 bgcolor="white">
    23.         <tr>
    24.           <td width="100">
    25.             <p
      align="right"><b>이름 &nbsp;</b></p>
    26.  
    27.           </td>
    28.           <td width="400">
    29.                         <p>&nbsp;</p>
    30.           </td>
    31.           <td width="100">
    32.                         <p
      align="right"><b>조회수 &nbsp;</b></p>
    33.           </td>
    34.           <td>
    35.                         <p>&nbsp;</p>
    36.           </td>
    37.         </tr>
    38.                 <tr>
    39.           <td width="100">
    40.                         <p
      align="right"><b>전자우편 &nbsp;</b></p>
    41.           </td>
    42.           <td colspan="3">
    43.                         <p>&nbsp;</p>
    44.           </td>
    45.                 </tr>
    46.                 <tr>
    47.           <td width="100">
    48.                         <p
      align="right"><b>홈페이지 &nbsp;</b></p>
    49.           </td>
    50.           <td colspan="3">
    51.                         <p>&nbsp;</p>
    52.           </td>
    53.                 </tr>
    54.                 <tr>
    55.           <td width="100">
    56.                         <p
      align="right"><b>제목 &nbsp;</b></p>
    57.           </td>
    58.           <td colspan="3">
    59.                         <p>&nbsp;</p>
    60.           </td>
    61.                 </tr>
    62.         <tr>
    63.           <td width="100">
    64.                         <p
      align="right"><b>내용 &nbsp;</b></p>
    65.           </td>
    66.           <td colspan="3">
    67.                         <p>&nbsp;</p>
    68.           </td>
    69.         </tr>
    70. </table>
    71.             <p
      align="center">[목록] &nbsp;[쓰기] &nbsp;[수정] &nbsp;[삭제]</p>
    72.           </td>
    73.     </tr>
    74. </table>
    75. </body>
    76. </html>

    다음 시간부터는 위 소스에 실제 프로그램을 입히는 작업을 해보겠습니다.

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

    게시판 글 목록 보기 기능(5) list.php 설명(下)

    Posted on : 2002-11-24 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1

    태그:, , , , ,

    0

    맘 같아서는 이 강좌, 얼릉 끝내고 싶지만, 잘 안되네요.
    자유게시판에 보면
    PHP 강좌를 기다리시는 분도 계시던데, 정말 죄송합니다.
    제 시간이
    허락하는 대로 최대한 빠르게 진행을 하겠습니다. (그리고 관심을 가지고 보아주셔서
    정말 감사합니다.)


    오늘은 게시판 목록 보기 마지막 시간이네요.
    list.php 소스 93행부터 끝까지
    설명드리겠습니다.

    먼저 아래 111행을 주의깊게 봐주세요.
    list.php?page=1으로
    링크하도록 프로그래밍되어 있습니다.
    page라는 변수에 1을 대입한 다음 list.php를
    실행하라는 의미겠죠. 이렇게 되면 list.php 파일이 실행될 때 page 변수, 즉 $page
    1을 대입하게 됩니다.

    현재 주소 표시줄을 한번 보세요. http://www.itmembers.net/board/view.php?id=php&page=1&sn1=&divpage=1……
    이런 식으로 되어 있죠?
    id는 php, page는 1, sn1은 없고, divpage는 1…. 이런
    식으로 변수 값을 가지고 view.php를 실행한다는 뜻입니다. 여러 개의 변수(파라미터)들을
    사용할 때는 가운데 & 기호를 써서 분리합니다.

    아래 소스는 결국 page 변수에 어떤 값을 넘겨주느냐를 결정하기 위한 프로그램입니다.
    111행에는
    page에 1을 대입하고 112행에서는 page에 $prev를 대입했습니다. 118행에서는 $go_page를,
    140행에서는 $next를 대입했습니다.
    그러면 결국 $prev, $go_page, $next 등이
    무엇을 의미하는지만 알면 아래 소스를 가볍게 이해할 수 있겠죠?

    1. <?
    2. //여기서부터 각종 페이지 링크
    3. //먼저, 한 화면에 보이는 블록($page_num 기본값 이상일 때 블록으로 나뉘어짐
      )

    4. $total_block=ceil($total_page/$page_num);
    5. $block=ceil($page/$page_num); //현재 블록
    6.  
    7. $first=($block-1)*$page_num; // 페이지 블록이 시작하는 첫 페이지

    8. $last=$block*$page_num; //페이지 블록의 끝 페이지
    9.  
    10. if($block >= $total_block) {
    11.         $last=$total_page;
    12. }
    13.  
    14. echo "
    15.                 &nbs p;       <p align=center>";
    16. //[처음][*개앞]
    17. if($block > 1) {
    18.         $prev=$first-1;
    19.         echo "<a href=’list.php?page=1′>[처음 ]</a>&nbsp; ";
    20.         echo "<a href=’list.php?page=$prev’>[$page_num 개
      앞]</a>";
    21. }
    22.  
    23. //[이전]
    24. if($page > 1) {
    25.         $go_page=$page-1;
    26.         echo "  <a href=’list.php?page=$go_page’>[이전
      ]</a>&nbsp;       ";
    27. }
    28.  
    29. //페이지 링크
    30. for ($page_link=$first+1;$page_link<=$last;$page_link++) {
    31.         if($page_link==$page) {
    32.                 echo "<font
      color=green><b>$page_link</b></font>";
    33.         }
    34.         else {
    35.                 echo "<a
      href=’list.php?page=$page_link’>[$page_link]</a>";
    36.         }
    37. }
    38.  
    39. //[다음]
    40. if($total_page > $page) {
    41.         $go_page=$page+1;
    42.         echo "&nbsp;<a
      href=’list.php?page=$go_page’>[다음]</a>";
    43. }
    44.  
    45. //[*개뒤][마지막]
    46. if($block < $total_block) {
    47.         $next=$last+1;
    48.         echo "<a href=’list.php?page=$next’>[$page_num 개
      뒤]</a>&nbsp;";
    49.         echo "<a
      href=’list.php?page=$total_page’>[마지막]</a></p>";
    50. }
    51.  
    52. ?>
    53.         </td>
    54.     </tr>
    55.     <tr>
    56.         <td width=100% colspan=5>
    57.             <p align=center><a
      href=’write.php’>[글쓰기]</a></p>
    58.         </td>
    59.     </tr>
    60. </table>
    61. </body>
    62. </html>

    96행은 게시판의 전체 블록 수를 구하는 방법입니다. 전체 페이지 수에서 한 화면에
    보여 줄 페이지 수를 나눈 값의 올림 수를 구한 것입니다.
    블록이 뭔지 이해가
    잘 안되시면 아래 도표를 보면 좀 이해가 되실 겁니다.

    예를 들어, 전체 글의 수가 225개라고 가정합시다. 그러면 첫 화면에는
    이렇게 보여야 됩니다.

    [1][2][3][4][5][6][7][8][9][10][다음][10개 뒤][마지막]

    한 페이지에 10개의 페이지만 바로갈 수 있게 되어 있습니다. 이렇게 10개를 하나의
    블록이라고 할 수 있습니다. 그러면 다음 블록으로 넘어가려면 어떻게 해야될까요?
    [10개 뒤]를 누르면 다음 블록으로 넘어간다고 가정합시다.
    [10개 뒤]를 클릭하면
    아래와 같이 되겠죠.

    [처음][이전][10개 앞][11][2][13][14][15][16][17][18][19][20][다음][10개
    뒤]
    [마지막]

    여기서 다시 [10개 뒤]를 누르면, 아래와 같이 나와야 되겠죠.

    [처음][이전][10개 앞][21][22][23][다음]

    도표로 정리하면 이렇게 되겠죠.

    블록 번호

    처음 페이지

    마지막 페이지

    1

    1

    10

    2

    11

    20

    3

    21

    23

    99와 100행에서는 블록의 처음과 마지막 페이지 번호를 구하는 식입니다.
    그런데
    실제 계산해 보면 제1블록일 때 $block의 값이 0이 됩니다. 그리고 제2블록일 때
    10이, 제3블록일 때 20이 됩니다. 위의 도표와 다르죠.
    그러나 122행에서 실제
    사용될 때는 +1을 해서 사용하게 됩니다. 그러면 위의 도표와 맞아 떨어집니다.

    기타 나머지 부분도 소스를 보면서 하나하나 이해해야 합니다. 제가 이리저리
    아무리 길게 설명해도 스스로 이해하지 못하면 아무런 소용이 없습니다.
    실제
    프로그램을 실행시켜가면서 위의 소스를 반복해서 보다가 보면 조금씩 이해가 될
    겁니다.

    당장 이해가 안된다고 포기하지 마세요~~~ (그래도 이해가 안되면 그냥 베껴서
    쓰면 되죠 뭐…^^)

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

    게시판 글 목록 보기 기능(4) list.php 설명(中)

    Posted on : 2002-11-16 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1

    태그:, , , , ,

    0

    지난 시간에 이어 계속 설명합니다.

    29행부터 60행까지는 그냥 HTML 코드입니다. 보면 아시겠죠?
    아래와 같이 테이블의 제목 부분에 해당되는 코드입니다.

    no

    subject

    name

    date

    hit

    여기에 이제 글번호, 제목, 작성자 이름, 작성 날짜, 조회수 등의 데이터를 쓰되,
    테이블 형식에 맞춰서 써야 합니다.
    따라서 62행부터의 코드는 HTML과 PHP 코드가
    섞여 있습니다. 눈여겨 보시면서 헤깔리지 않도록 주의하시기 바랍니다.

    1. <?
    2. while ($array=mysql_fetch_array($result)) {
    3.  
    4.         $date=date("Y/m/d",
      $array[writetime])
      ; //글쓴시각을 Y/m/d 형식에 맞게 문자열로 바꿉니다.
    5.  
    6.         echo "
    7.     <tr>
    8.         <td width=30>
    9.             <p
      align=center>$cur_num</p>
    10.         </td>
    11.         <td width=490>
    12.             <p>$array[subject]</p>
    13.         </td>
    14.         <td width=60>
    15.             <p
      align=center>$array[name]</p>
    16.         </td>
    17.         <td width=70>
    18.             <p
      align=center>$date</p>
    19.         </td>
    20.         <td width=30>
    21.             <p
      align=center>$array[count]</p>
    22.         </td>
    23.     </tr> ";
    24.  
    25.         $cur_num –;
    26.  
    27. }
    28. ?>

    63행부터 88행까지 하나의 while 제어 블록입니다. while(   )
    안의 조건이 참인 동안 계속됩니다.
    괄호 안의 조건을 보면 $array=mysql_fetch_array($result)
    으로,

    전 시간에 다뤘던, 24행의 쿼리문을 실행한 25행의 $result 값을 배열
    형태로 다시 불러와 화면에 표시하는 역할을 합니다.

    24.$query="select * from $tablename order by number desc limit $offset,
    $list_num"; // SQL 쿼리문

    25. $result=mysql_query($query) or die (mysql_error()); //
    쿼리문을 실행 결과
     

    mysql_fetch_array() 함수는 전 시간에 다루었던
    mysql_fetch_row()와 마찬가지로 쿼리의 결과를 배열 형태로 한 줄씩
    리턴하는 기능을 합니다.
    여기서 중요한 건 한 줄씩만 리턴한다는
    것입니다.(mysql_fetch_row 함수도 한 줄씩 리턴합니다.)
    만약 select * from $tablename; 과 같은 쿼리문을 사용하여 $tablename
    테이블의 모든 행을 조회해서 그 결과를 불러들이더라도, 단 한줄씩만 저장한다는
    뜻입니다.
    따라서 63행부터 88행까지는 24행의 쿼리문을 실행한 결과를 한줄씩
    불러내서 화면에 표시하게 됩니다.
    쿼리의 결과로 100개의 레코드(행)가 돌아왔다면,
    이 함수를 100번 반복해서 하나씩 불러들여야 한다는 것입니다.

    while 의 괄호 안의 조건절을 보면 $array=mysql_fetch_array($result)입니다.
    즉, 쿼리의 결과값이 있을 때까지 반복한다는 것이죠.
    만약 mysql_fetch_array($result)의
    값이 없다면 이 함수는 flase 값을 돌려주면서 $array 역시 false가 되면서
    while문이 종료되는 것입니다. (혹시 설명이 어렵더라도 더 이상 쉽게 설명하기 힘드니
    그러려니 하고 받아들이시길….)

    이렇게 mysql_fetch_arry() 함수의 결과는 배열 형태로 저장됩니다. 따라서 $array[xxx]와
    같은 식으로 되겠죠. 여기서 xxx 자리에 무엇이 들어갈까요?
    바로 필드(컬럼)
    이름이 들어가게 됩니다. 65, 73, 76, 82행에서와 같이 $array[writedate],
    $array[subject], $array[name], $array[count] 식으로 쓰면 되는 것입니다.
    만약
    mysql_fetch_row() 함수를 사용했더라면 $array[0], $array[1],… 등과 같이 숫자를
    사용했어야 합니다. 어느 것이 더 편리할지는 쉽게 알 수 있겠죠?
    이제 그 차이를
    아시겠죠? mysql_fetch_row를 사용해 얻은 배열값을 사용하려면 배열 첨자로 숫자를
    써야하고, mysql_fetch_array를 사용해 얻은 배열값을 사용하기 위해서는 실제 컬럼
    이름을 사용한다는 것.

    65행에는 date() 함수를 볼 수 있습니다. 정해진 형식에 맞게 날짜를 표시해주는
    역할을 합니다.
    date("Y/m/d",
    $array[writetime])
    는 $array[wirtetime]의 값을 년(Y)/월(m)/일(d)의 형태로
    표시하라는 뜻입니다.

    67행의 echo 문은 이미 앞에서도 몇 번 나왔으니 아실테고… 단, 여기시 실수하기
    쉬운 것이 바로 인용 부호(" ")입니다. 67행에서 " 로 시작한 내용이
    84행의 " 로 끝나는 것입니다. 84행에서 " 를 빠뜨리는 실수를 자주하게
    되는데 조심하세요. 참, " 뿐만 아니라 ; 역시 빠뜨리기 쉽습니다. 주의!

    70행은 현재의 글번호가 저장된 $cur_num를 표시하는 행입니다. 그런데,
    앞 시간에 $cur_num에 대한 설명을 빠뜨린 것 같네요.
    21행을 봅시다.

    21. $cur_num=$total_no – $list_num*($page-1); //현재 글번호

    아래의 테이블을 보면서 설명드리는 게 쉽겠네요. 아래와 같이 세 개의 글이 있다고 가정해 봅시다.
    그러면
    처음으로 표시할 행은 글번호 3번이 되겠지요. 이 3에 해당되는 것이 바로 $cur_num입니다.
    그럼,
    다시 21행을 보면, 전체 글 수($total_no)에서 $list_num*($page-1)을 뺀
    값을 저장합니다. 전체 글 수가 만약 3이라면,
    3 – 10*(1-1)이 되겠지요.
    지난 시간에 $list_num은 10으로 했고, $page의 기본값이 현재 1인 상태이기 때문입니다.
    그러면 결과는 3이 됩니다.

    그런데 86행을 보면.
    $cur_num — ;
    이것은 $cur_num = $cur_num
    - 1
    ; 과 동일한 식입니다. 즉 기존의 $cur_num의 값에서 1을 뺀 값이 저장되는
    것입니다.
    즉 while 문을 한 바퀴 돌 때마다 숫자가 1씩 줄어드는 것입니다.
    (반대로
    $cur_num ++ ; 라고 했다면 이는, $cur_num = $cur_num + 1; 과 같은 뜻이 됩니다.)

    no

    subject

    name

    date

    hit

    3

     세 번째 글입니다.

    손병목

    2002/11/16

    5

    2

     두 번째 글입니다.

    손병목

    2002/11/16

    3

    1

     첫 번째 글입니다.

    손병목

    2002/11/16

    4

    그렇게 되면 위의 테이블과 같이 3, 2, 1과 같이 숫자가 줄어들게 됩니다. (그러나
    화면에 표시되는 글 번호는 실제 레코드 번호와는 다릅니다. 실제 레코드 번호는
    0부터 시작합니다.)

    나머지 행들은 보면 이해가 되시죠?
    73행에는 글 제목이, 76행에는 작성자
    이름이, 79행에는 65행에서 구한 날짜가, 82행에는 조회수가 표시됩니다.

    설명이 좀 부족했나요?
    while 문에 대한 기본 설명은, PHP 문법의 기초(3) – 제어문(上)
    참조해 주세요.

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

    Switch to our mobile site