본문 바로가기

Creation/Programming

[Web Application] PHP를 이용한 Web Application 제작의 4단계

PHP - Web Application 제작의 가장 쉬운 툴



PHP는 아마 Javascript를 제외하면 HTML과 가장 많이 연동되지 않을까?

PHP가 있으면 거의 모든 형태의 Web Application이 제작이 가능하다. 말 그대로.. 사실 이게 전혀 어렵지가 않은데, 괜히 어려워보인다. 좀 어려워 보이는 필요한 지식은 SQL Query문 뿐이다. 내 생각엔..



모든 프로그램은

1. 사용자로부터 변수를 입력 받아서

2. 중간 매개 프로그램이 그 변수를 불러와서 그를 바탕으로

3. DB에 저장하거나, 읽어온다.

4. 중간 매개 프로그램은 DB를 이용하여 처리한 후 사용자에게 출력해준다.


1. 사용자로부터 변수 입력받기


1의 경우에는 form만 만들줄 알면 된다. JQueryMobile과 세트로 작동하는 얼마전에 완성한 프로젝트인 SyntaxHighlighter Remote에서 사용한 코드는


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<form method="post" action="/syntax/result.php" data-ajax="false">
    <fieldset style="float: left;" data-role="controlgroup" data-type="horizontal" data-mini="true">
        <input type="radio" name="type" id="radio-choice-c" value="py" checked="checked">
        <label for="radio-choice-c">Python</label>
        <input type="radio" name="type" id="radio-choice-d" value="php">
        <label for="radio-choice-d">PHP</label>
        <input type="radio" name="type" id="radio-choice-e" value="js">
        <label for="radio-choice-e">JS</label>
        <input type="radio" name="type" id="radio-choice-f" value="cpp">
        <label for="radio-choice-f">C++</label>
        <input type="radio" name="type" id="radio-choice-g" value="html">
        <label for="radio-choice-g">HTML</label>
    </fieldset>
    <div style="float: right;">
        <input type="submit" value="Submit" data-theme="e" data-inline="true"></input>
    </div>
    <div class="ui-grid-solo" style="clear: left;">  
        <div class="ui-block-a">
            <p>Type the source below:</p>
        </div>
    </div>
    <textarea name="source" placeholder="Input your source code"></textarea>
</form>


위와 같다. 굳이 일단은 디자인에 신경을 쓰지 않아도 form 테그만 이용하면 1번의 입력단을 충분히 만들 수 있다.



2. 중간 매개 프로그램(PHP)의 변수 넘겨받기


1
2
3
4
5
<?php
    $a = $_GET('a');
    $b = $_POST('b');
    $c = $_REQUEST('c');
?>


이 또한 어렵지 않다. 순전히 이 부분은 1번 파트에서 어떻게 넘겼는가에 따른 문제이다.

만약에 form 테그에서 method="get"으로 넘겼다면 $_GET을 쓰면 되고, 아니고 method="post"로 넘겼다면 $_POST로 받으면 된다. 잘 모르겠고 그냥 받겠다 하면 $_REQUEST를 쓰면 되고..


만약에 로그인하는 PHP 프로그램을 만들겠다? 그렇다면 id랑 pw를 받으면 되는 것이다.



3. DB에 접근하기


가장 보편화된 MySQL을 쓰게되면 여러 소스들이 많이 있다. 아래를 한번 보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
$host_name = "localhost";
$user_name = "user";
$user_password = "*****";
$db_name = "test";
 
$connect = mysql_connect($host_name,$user_name,$user_password) or echo "mysql_error()";
 
$que = // SQL Query
$data = mysql_query($que, $connect) or echo "mysql_error()";
 
?>


명백한 코드지만 mysql_connect로 접속하여, $que에 Query를 넣고, $data로 DB의 Data를 출력받는 코드임을 알 수 있다. 로그인을 한다 치면, 적절한 id와 pw를 입력받아 SELECT Query로 그것이 맞는지를 확인한다음 출력을 받아야 할 것이다.



4. 결과값 출력하기


크게 두가지 방법이 있는데,


1) php를 HTML 사이에 삽입하여 결과물 출력

  이 경우에는 db에서 받은 데이터 결과값을 가공한 것이 $data에 저장되어 있다고 가정했을 때, HTML 사이에 <?php echo $data; ?>와 같이 삽입해서 쓰면 된다. 제일 간단한 방법이다.


2) json과 같은 자료형으로 출력

  json을 쓰게 되면, ajax와 결합시킬 수 있다. 실시간으로 결과값을 전송받아 화면에 출력시켜 줄 수 있다. 조금 복잡하므로 나중에 예제와 함께 기회가 되면 포스팅 해보도록 하겠다.




  중간에 추가적으로 든 생각은 처리하는 부분에서 python을 쓴다는 생각이다. 이 경우에는 passthru("python a.py var1 var2"); 함수를 쓰면 되고 출력은 python에서 직접 print로 찍어주면 된다. 이 경우에는 json으로 그냥 처리하는게 편할것이라는게 내 생각이다. (php와 python간의 데이터 교환이 어려움)