98..Etc/PHP

왕초보, 왕비초보를 위한 PHP 개념정리 ”

1010 2008. 11. 26. 14:00
반응형
왕초보, 왕비초보를 위한 PHP 개념정리 ”


PHP에 대해 알듯 모를듯하시는 분이 계시는것 같아 몇줄 적어 보았습니다.
저도 배우는 중이라 100% 맞는다고는 할 수 없지만 개념정도를 이해하시면 될 것입니다

1. 질문들이 PHP라 어렵다...뭐 그러시는 분들이 많으신것 같습니다,
  그러나 질문내용을 보면 대부분이 HTML에 관한 질문들입니다...
  화면을 구획으로 나누고, 테투리를 설정하고, 그림 등으로 장식하고 하는일은
  전부 HTML이 하는 일이라고 보시면 됩니다.

  즉  잘... 아주 잘..... 구성된 구획안에 ..... 여기까지는 HTML
  어떤 값 (데이터값,그림등)을 채워 넣는 단순한 역할을 하는 것이 PHP(mySQL쿼리)리고 보시면 됩니다.

2. 정리들어갑니다..
  사용자의 PC의 브라우저가 해석하는것은 HTML 입니다.
  그러므로 PHP는 사용자PC(Client)에서 적용되는 것이 아니고 웹서버에서 적용되는 것이지요  
  정리 : 사용자 PC는 HTML을 웹서버는 PHP을 해석한다고 보면 되겠네요

3. 우리가 흔히 아는 HTML 을 아래와 적었다면
  <table>
      <tr>
          <td>
              제목 1  
          </td>
      </tr>
   </table>
  화면출력은 '제목 1' 이라고 달랑 한줄 나옵니다.  動적이 아니라 靜적 이지요.....
  아무 가감없이 즉 주는대로 나옵니다.

4. 여기다가 동적 값을 구현해 주는게 PHP라고 보시면 됩니다.
  동적 값을 구현하려면 아래와 같이 해주어야 할 것 같군요
  즉, 아래의 예문에서
  'DB에서 제목줄을 읽어 그내용을 출력' 대신에
   웹서버에서 수행 할 명령을 적어주면 된다는 것 입니다

   <table>
       <tr>
           <td>
                DB에서 제목줄을 읽어 그내용을 출력  ---> 대신에 명령을 적어줌으로 각기 다른값들이 출력됨
           </td>
       </tr>
  </table>

5. 상기의 'DB에서 제목줄을 읽어 그내용을 출력' 대신에
   아래와 같은것을 적어 웹서버에 명령을 내려 볼까요.

   reeboard에서 번호 1번인것을 읽어서 그내용중 제목을 출력하라는 의미입니다

   while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){
       echo $data[subject];
   }

  그러면 웹서버에서 상기명령을 수행한후  그 결과값을 업로드 할 것입니다.
  즉 명령 내용에 따라 구획안에 들어갈 값이 변경 됩니다. 그걸 동적이라고 표현한 것입니다

6. 이해가 되셨으면 브라우저가 수행할 명령과 웹서버가 수행할 명령을 합쳐 볼까요...
  합치기 전 우선 두가지의 명령의 구분을 위해서 웹서버가 실행할 명령의 앞,뒤에 <?, ?>를 붙여 봅니다  
   <?    
   while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){
       echo $data[subject];
   }
   ?>

  브라우저 명령(html)과 웹서버 명령(<?, ?>)을 구분하였으니 이젠 합쳐 봅니다. 아래와 같이 되겠습니다.
  <table>
      <tr>
          <td>
              <?    
              while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){
                  echo $data[subject];
              }
              ?>
          </td>
      </tr>
   </table>

7. 이 파일을 수행하면 결과는 아래와 같이 될것 같군요..
  아마 프리보드의 제일 처음 레코드의 제목 "보드생성이 완료" 정도가 출력 될 것 같군요..
 
  어쨋든 지정된 글자(정적인 글자)가 아닌 보드의 활성데이터(동적)인 데이터를
  출력하게끔 만들어 주는것이 PHP라고 보면 되겠네요.

8. 또 정리 들어갑니다... client 와 web server 간의 작업순서를 나타낸 것입니다.

   가. 클라이언트(Client:사용자의 PC)
            ▽
            ▽ 클릭함으로써 보여줄 내용의 파일을 요청하게 됨
            ▽ 클릭한곳에 링크된 내용을 보여줄 파일을 요청(예;board.php 파일등)
            ▽
   나. 웹서버(Web Server:apache iis등)
            ▽
            ▽ 웹서버가 보여줄 내용의 파일을 보니 내용에 PHP가 있다,그러면 PHP를 실행.
            ▽ PHP 실행후 실행 결과를 HTML 텍스트로 만들어 클라이언트에 업로드
            ▽
   다. 클라이언트(Client:사용자의 PC)
            ▽
            ▽ 웹서버로 부터 전송되어온 HTML 파일을 해석하여 화면 출력(브라우저)
            ▽
   라. 클라이언트(Client:사용자의 PC 화면 출력)

   상기의 '나' 번에서 웹서버가 수행할 명령들을 내려주는것이
   파일내에서 <?....?>로 감싸져 있는 PHP 내용이 되겠네요.

9  약간 무리하게 내용을 구성한다면 아래와 같이 하셔도 되긴 됩니다만...
   하여간 이렇게 해도 된다는것을 보여드리기 위해..

   아래와 같이 명령 전체를 웹서버에 떠넘기는 것이지요..
   <?
   echo "<table>
             <tr>
                 <td>";
                    while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){
                       echo $data[subject];
                    }
   echo "       </td>
             </tr>
         </table>";
   ?>
   위의 예에서 스페이스는 인식하기 좋게 하기 위한 목적으로 대충 띄운 것입니다.
   별 의미가 없단 얘기입니다.

   가. 이렇게 하면 아무의미없이 echo 명령에 의해 <table><tr><td> 등을 쓸것이고
   나. 그다음에 동적인 명령으로으로 테이블을 읽어오고 쓰고
   다, 또다시 아무런 의미 없이 echo 명령에 의해 </td></tr></table> 등을 쓸것입니다

   프로그램의 효율성이 문제가 되겠지만 어쨋던 결과는 똑 같아집니다..

10. 또는 아래와 같이 써도 결과는 똑 같습니다..
   <table>
      <tr>
          <td>
              <?    
              while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){}
              ?>
              <?= $data[subject]?>
          </td>
      </tr>
   </table>
   여기서 <?=$변수명?> 은 그변수가 가지고 있는 값을 출력하라는 명령입니다

11. 또는 아래와 같이 써도 결과는 똑 같습니다.. 가장 많이 쓰는 방식이기도 합니다
    <?    
    while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){}
     ?>
   <table>
      <tr>
          <td>
              <?= $data[subject]?>
          </td>
      </tr>
   </table>
   여기서 <?=$변수명?> 은 그변수가 가지고 있는 값을 출력하라는 명령입니다

12. 이해하셨다면.....우리가  어떤 화면을 소스보기하여 보면
    소스보기의 내용에는 PHP 프로그램은 없고  HTML 내용만 있는지 아실 겁니다.
    그것은   웹서버에서 수행한 결과를 브라우저가 해석해서 화면에 뿌려주기 때문에
   화면상에는 결과값만 있는 것입니다...

13. 이상 간단 개념 정리입니다... 그래도 의문점이 있으시면 질문주십시요...
    초보분들은 한번씩 읽으시고 간단개념 정리를 하셔요..
    개념정리가  어쩌면 더 중요할지도 모르기 때문입니다..

대충 이해가 되셨으리라 생각하고 이만 줄입니다.. 도움되시기를..