8. PHP를 통한 index파일의 구성
PHP의 include를 통해 특정파일을 불러 올 수 있다는 것을 이용해 아래와 같이 HTML파일을 분리하여 사용할 수 있다.
<? include 'header.html'; include 'content.html'; include 'footer.html'; ?>
위와 같은 형태로 작성하면 서브페이지의 갯수만큼 위의 파일을 작성해야 한다.
이것은 서브페이지의 갯수가 늘어나는 많큼 유지보수를 어렵게 만든다. 이를 극복하기 위해 주소자체를 매개변수로 이용하는 방법을 사용하면 유지보수의 어려움에서 쉽게 벗어날 수 있다.
A태그를 이용해 주소를 전송 할 때 보통은 아래와 같은 방법을 사용하고 있다.
<a href="content1.html">메뉴1</a>
<a href="content2.html">메뉴2</a>
<a href="content3.html">메뉴3</a>
<a href="content4.html">메뉴4</a>
위의 예에서는 4개의 파일이 필요하다. (content1.html ~ content4.html)
하지만, 아래처럼하면 1개의 파일만으로 처리가 가능해진다. (content.php)
<a href="content.php?menu=1">메뉴1</a>
<a href="content.php?menu=2">메뉴2</a>
<a href="content.php?menu=3">메뉴3</a>
<a href="content.php?menu=4">메뉴4</a>
즉, 주소의 전달값을 매개변수로 사용하는 것이다.
실제적인 예제를 살펴보기 위해 아래처럼 전체적인 디자인을 만들어보자.
----주소---------------------------------------서브파일-------------------------
index.php --------------- header.html + 메인메뉴.html + footer.html
index.php?menu=1 --- header.html + menu1.html + footer.html
index.php?menu=2 --- header.html + menu2.html + footer.html
index.php?menu=3 --- header.html + menu3.html + footer.html
index.php?menu=4 --- header.html + menu4.html + footer.html
menu가 어떤 값을 갖는지 구분하여 각각의 서브파일들을 묶어주면 된다.
공통적으로 사용되는 header.html과 footer.html을 만들어 보자.
<html lang=ko> <head> <meta charset=utf-8> <style> .menu { text-decoration: none; } .content { font-size: 30px; } .footer{ font-size: 20px; } </style> </head> <body> <a href="index.php?menu=1" class="menu">MENU 1</a> <a href="index.php?menu=2" class="menu">MENU 2</a> <a href="index.php?menu=3" class="menu">MENU 3</a> <a href="index.php?menu=4" class="menu">MENU 4</a>
위의 파일에서 봐야할 것은 A태그의 index.php 뒤에 나오는 menu=숫자 형태이다. 이렇게 주소를 매개변수처럼 지정하는 것이다.
<p class="footer">FOOTER CONTENT</p> </body> </html>
이제 header + 콘텐츠 + footer로 연결 할 index.php파일을 만들어 준다.
<? include './header.html'; $menu = $_GET['menu']; if ($menu == '1') { include './menu1.html'; } else if ($menu == '2') { include './menu2.html'; } else if ($menu == '3') { include './menu3.html'; } else if ($menu == '4') { include './menu4.html'; } else { include './nopage.html'; } include './footer.html'; ?>
그리고 각 컨텐츠에 들어 갈 menu1~4파일과 메인컨텐츠를 담당하는 nopage.html을 만들어 준다.
<p class="content"> menu 1 - blabla </p>
<p class="content"> menu 2 - blabla </p>
<p class="content"> menu 3 - blabla </p>
<p class="content"> menu 4 - blabla </p>
<p class="content"> 메인메뉴입니다. </p>
이제 브라우저에서 실행해 보자.
MENU 1을 클릭해 보자.
잘 작동되고 있다. 여러 개의 서브페이지를 만들지 않고, 주소를 매개변수처럼 사용하여 index.php 파일 하나로 모든 서브페이지를 제어 할 수 있게 되었다.
번호 | 분류 | 제목 | 날짜 | 조회 수 |
---|---|---|---|---|
41 | HTML |
4. DIV안에 DIV 넣어 정렬하기
5 ![]() |
2015.12.23 | 134704 |
40 | HTML |
5. DIV를 통한 헤더 만들기
1 ![]() |
2015.12.24 | 83949 |
39 | HTML |
6. DIV를 통한 전체 화면 사용하기 & 응용
2 ![]() |
2015.12.24 | 53803 |
38 | HTML |
3. DIV내의 문자컨텐츠 수평정렬과 수직정렬
1 ![]() |
2015.12.23 | 24265 |
» | HTML |
8. PHP를 통한 index파일의 구성
1 ![]() |
2015.12.28 | 19804 |
36 | HTML |
10. position: absolute; 에 대해 알아보자
1 ![]() |
2015.12.30 | 19672 |
35 | HTML |
JavaScript의 반복문을 알아보자.
2 ![]() |
2016.02.24 | 16534 |
34 | HTML |
2. DIV요소의 수평정렬과 수직정렬
![]() |
2015.12.23 | 15482 |
33 | HTML | Transition에 대해 알아보자. 8 | 2016.06.22 | 13707 |
32 | SASS | Sass 소개 | 2019.09.19 | 13118 |
31 | HTML | Form 요소 설명 4 | 2016.06.01 | 12831 |
30 | HTML |
DIV 제거와 CSS 코드 줄이기
![]() |
2016.02.17 | 10580 |
29 | HTML |
li 에 대해 알아보자.
2 ![]() |
2016.02.15 | 10342 |
28 | HTML |
요소의 수직정렬을 알아보자.
1 ![]() |
2016.03.01 | 10340 |
27 | HTML |
1. Inline 요소와 Block 요소에 대한 이해
![]() |
2015.12.22 | 10127 |
26 | HTML |
11. viewport를 활용한 반응형 예제
![]() |
2015.12.31 | 9208 |
25 | HTML |
9. position: relative; 에 대해 알아보자
![]() |
2015.12.29 | 8553 |
24 | HTML |
7. position: static; 에 대해 알아보자.
![]() |
2015.12.28 | 7259 |
23 | HTML |
class 에 대해 알아보자.
1 ![]() |
2016.02.16 | 6740 |
22 | HTML |
하나의 class = 하나의 디자인 ?????
![]() |
2016.02.23 | 6204 |
<style>
.M1, .M2 { position: relative; display: inline-block;
width: 100px; height: 100px;
border: 1px solid red;
}
.S1, .S2 { position: absolute; top: 50px; left: 50px;
width: 100px; height: 100px;
border: 1px solid red;
}
</style>
<div class="M1">A-MAIN
<div class="S1">A-CONTENTS</div>
</div>
<div class="M2">B-MAIN
<div class="S2">B-CONTENTS</div>
</div>