티스토리 뷰

흠...뭔가 제목이 구구절절한것이....



오랜만의 php


사실 글쓰기도 오랜만...ㅠ


하루하루가 과제 폭탄이지만 이제 종강이 얼마 남지 않았다!!!!!!!!!!!


방학에는 이것저것 다 손대봐야지





저번에는 php와 postgresql을 연결해서, csv파일의 데이터를 postgresql Table에 삽입하는 것을 하였다.


이번에는 postgresql에 저장된 데이터를 php로 불러와서 화면에 띄워주는 작업을 하겠다.





이번에 구현한 php 화면은 위와 같이 구현된다...!!



여기서 만든 시스템은 비행기 좌석 예약 시스템이다.


그리고 이 화면은 예약 시스템의 첫 화면이다.



다시 말하지만...나는 정말...웹알못....웹을 알지도 못하는 사람이기때문에...


이쁘지 않은건.....어쩔수없........ㅠ


그래도 테이블엔 색깔 넣었다 (자기만족)


먼저 One-way인지 Return 인지 선택 할 수 있다.


어떤걸 선택하느냐에 따라, 돌아오는 날짜를 고를수도 있고 고르지 못할 수도 있다...!!


그리고 각각의 select box에 적힌 공항의 이름은 현재 postgresql에서 받아오는 data이다.





그렇다면, 이젠 코드


\n";
}

$query = "SELECT * FROM Airport";   
$query2 = "SELECT DISTINCT date_t from flightreserv ORDER BY date_t ASC";

$result = pg_exec($conn, $query); 
$result2 = pg_exec($conn, $query);
$result3 = pg_exec($conn, $query2);
$result4 = pg_exec($conn, $query2);
?>


 
  
  
  
  
  
  
  PNU Air Reservation System
 
 

 

FromToExit DateEntry Date


두둥...!! 120줄


위에서부터 차근차근 살펴보겠다



$db_host="host=localhost";
$db_port="port=5432";

$db_passwd="user=postgres password=postgres";
$db_name="dbname=assignment";

$conn=pg_connect("$db_host $db_port $db_name $db_passwd");

if(!$conn){
  echo "db connect fail:
\n"; }




일단 여기 부분은 db, 즉 postgresql과 php를 연결하는 부분이다.


이부분은 이전에도 언급했으니 넘어가겠다


$query = "SELECT * FROM Airport";   
$query2 = "SELECT DISTINCT date_t from flightreserv ORDER BY date_t ASC";

$result = pg_exec($conn, $query); 
$result2 = pg_exec($conn, $query);
$result3 = pg_exec($conn, $query2);
$result4 = pg_exec($conn, $query2);
?>


그리고 이제 두개의 쿼리문을 작성하였다.


하나는, Airport Table에서 모든 정보를 다 불러오는 쿼리문


다른 하나는, flightreserv Table에서 date_t를 오름차순으로 불러오는 쿼리문이다.


'ORDER BY Attribute명 ASC 을 뒤에 붙여주면 오름차순으로 자료를 불러올 수 있다. 알파벳이면 알파벳, 숫자면 숫자순으로.


그리고 DISTINCT를 앞에 적어주면, 중복을 없애고 자료를 가져올 수 있다.


mySQL도 그렇고, postgreSQL도 마찬가지로 기본적으로 아무런 동작을 해주지 않으면 중복을 제거하지 않기때문에


DISTINCT를 써주는 것이 좋다.




pg_exec 메소드를 사용해서 쿼리문을 실행시키는데, 내가 사용할 것은 4개의 셀렉트박스이므로


$result, $result2, $result3, $result4의 네가지 변수를 선언하고 쿼리문을 실행시킨다.




요 script 내에서 함수 두개를 선언해주었다.


사실 이건...굳이 안해도 되는데, 하니까 있어보이더라.



저 위에서 보이다시피, Table 위에 두개의 라디오 버튼이 있다.


그리고 동영상에서 보였다시피, One-way 를 선택했을 때는 Table의 마지막 Entry의 SelectBox가 없어지고,


Return을 선택했을때는 Entry의 SelectBox가 생기는 것을 알 수 있다.



이것은 Radiobutton의 onclick을 지정해줌으로써 구현한 것인데,


check() 함수는 Entry라는 ID를 가진 element를 "visible"하게 바꾸어주는 것이고


defcheck() 함수는 Entry라는 ID를 가진 element를 "hidden"하게 바꾸어 주는 것이다.


 
 


그리고 위와 같이, radiobutton에 onclick으로 defcheck()와 check()를 호출한다.


One-way가 선택되었을때는 Entry를 숨겨줄 defcheck()을 호출하고,


Return이 선택되었을때는 Entry를 보여줄 check()를 호출한다.



아 그리고 또 여기 중요한게 있는데,


radio button은, 하나가 선택되면 다른 하나는 선택되면 안된다.


중복 선택을 허용하는것은 radio button이 아니라 check Box이다.


그러므로, 라디오버튼은 약간 신경써주어야 하는게 있다.



위의 코드에서 두개의 라디오 버튼의 name="oneway"로 같은 것을 알 수 있다.


name이 두개가 같아야, 두 라디오 버튼이 같은 그룹이라는 것을 뜻한다.


그래서 둘중에 하나가 선택되면 다른 하나는 선택되지 못하게 구현된다.


만약 두개의 name을 다르게 정하면 둘다 선택되는 불상사가 일어날 수도 있다.


name은 똑같이, value 값을 다르게 지정해준다.




그리고 아랫부분은 table을 이쁘게 꾸며준 스타일 지정부분이다.


ㄴ...내가 한것이 아니니까 그냥 넘어가겠다



그리고 요런 부분이 있다.


이 부분은, submit button을 눌렀을때 어떤 동작을 할지 지정해준다.


이 코드 같은 경우는 submit button을 누르면 /sub.php로 넘어가게 된다. 



post라고 적힌 부분에 쓸 수 있는것은 post와 get이 있는데,


나는 이 페이지에서 생긴 변수를 다음 페이지로 넘길 것이기 때문에 post로 지정해주었다.



FromToExit DateEntry Date


이 부분은 테이블 생성 부분이다.


table은 <table>이라는 태그를 달아줌으로써 간편하게 생성되고,


<tr>로 행이 구분되고,


<td>로 각각의 칸이 구분된다.



첫번째 <tr>태그, 즉 테이블의 첫행에는 항목의 이름이 적힌다.


From, To, Exit Date, Entry Date 를 입력해준다.



그리고 두번째 <tr>태그, 테이블의 두번째 행에서는 select box를 넣어준다.


여기서, 아까 실행한 query문의 결과가 사용된다.



첫번째 칸과 두번째칸은 From, 즉 공항의 이름이 출력되면 된다.


select box는 <select> 태그로 생성해 줄수 있는데,


안의 option을 DB로부터 불러온 값을 넣을것이다.



while문을 써야하니까 <?php를 이용해서 중간에 php 코드를 삽입하였다.


pg_fetch_array는 query문의 실행결과를 한줄씩 array로 읽어오는 역할을 한다.


한줄씩 결과를 읽어오면서,


echo "<option value ='".$row['code']."'>".$row['name']."</option>";


를 써주는데


저렇게 써놔서 약간 복잡해보이는데


예를들어 인천공항이라 하면


echo "<option value = "ICN">Seoul Incheon International Airport</option>"


의 형태로 쓰여진 것이다.


여기서 value는 C++이나 C로 따지자면, 변수의 이름이고 꺽쇠 바깥쪽에 적힌 것은 변수의 내용, 즉 화면에 출력할 부분이다.




name이 value가 되기에는 너무 길고 복잡하니까, value는 간단하게 해주기 위해 code로 지정하였고


화면에 출력해주는 부분은 name으로 출력해주었다.



그리고 네개의 셀렉트박스에 대해 같은 과정을 반복한다.




마지막으로,




submit button을 클릭해주면, 위에서 설정해준 대로


/sub.php


로 넘어가는 것을 확인할 수 있다.





다음번에는, sub.php에서 $_POST 메소드를 사용하여 변수를 받아오는 것을 하겠다.




혹시...웹알못이 잘못 쓴거라도 있으면....댓글 달아주시면...빠른 속도로 수정하겠습니다.....(쭈굴)

댓글