Preface
이번 장에선 HTML과 PHP의 기본 문법을 간략히 살펴봤다.
HTML과 관련된 내용은 다음 책에서 자세히 다룰 것이므로 가볍게 살펴봤고,
PHP의 문법도 다른 프로그래밍 언어의 문법과 크게 다른 부분이 없어 코드를 몇 번 작성하다 보니 금방 익숙해졌다.
1. 웹 사이트 개발 환경 구축
- 웹 사이트 구축에 필요한 요소
1) 웹 서버
2) 데이터베이스
3) 프로그래밍 언어 etc.
- 각종 소프트웨어들은 제작 회사가 달라 종종 호환성 문제가 발생한다.
- XAMPP: Apache + MySQL + PHP + Perl의 약자로, 상호 호환성이나 충돌 문제를 미리 해결해서 배포하는 소프트웨어
- XAMPP 설치: https://www.apachefriends.org/download.html
Download XAMPP
Includes: Apache 2.4.53, MariaDB 10.4.21, PHP 7.4.29 + SQLite 2.8.17/3.38.5 + multibyte (mbstring) support, Perl 5.34.1, ProFTPD 1.3.6, phpMyAdmin 5.2.0, OpenSSL 1.1.1o, GD 2.2.5, Freetype2 2.4.8, libpng 1.6.37, gdbm 1.8.3, zlib 1.2.11, expat 2.0.1, Sablot
www.apachefriends.org
2. 스크립트 언어 개요와 HTML 문법
- 정적인 웹 사이트: HTML을 사용해서 작성된 사이트
- 동적인 웹 사이트: 실시간으로 변경되는 웹 사이트
- 클라이언트 스크립트: 클라이언트의 웹 브라우저에서 해석되는 것
- 서버 스크립트: 서버에서 처리해서 HTML 코드로 변환해서 전달하는 언어
→ 고정된 내용이 아니라 클라이언트가 요청될 때마다 새로 해석하므로 내용이 실시간으로 변경된다.
- 대부분의 서버 스크립트는 DB와 연동되어야 한다.
- 웹 서버의 역할: 클라이언트가 요청하는 소스 코드를 변경 없이 클라이언트에게 전송
- HTML: HyperText Markup Langueage의 약자로 웹 페이지를 만들기 위한 마크업 언어
1) 파일의 확장자는 *.htm 또는 *.html로 된다.
2) 텍스트 파일이므로 인코딩 방식은 UTF-8로 저장한다.
3) 태그는 대부분 < > 안에 쓴다.
4) 대소문자를 구분하지 않는다.
5) 파일은 <HTML> 태그로 시작해서 </HTML> 태그로 종료한다.
- HTML 파일의 기본 구조
<HTML>
<HEAD>
화면에 표시되지 않는 정보(타이틀, 인코딩 정보 등)
</HEAD>
<BODY>
화면에 보이는 본체(주로 태그들을 표현)
</BODY>
</HTML>
→ <HEAD>에는 <TITLE> 제목 </TITLE>이 가장 많이 사용된다. (웹 페이지의 제목을 표시)
- HTML 태그 기본
1. <META>: 웹 페이지의 정보 설정, 검색 엔진에게 문서 내용 요약, 언어 설정 등 (<HEAD> 영역에 표현된다.)
<META http-equiv="content-type" content="text/html; charset=utf-8">
<!-- 웹 페이지의 문자 코딩을 UTF-8로 인식되게 한다. -->
2. <BR>: 글자의 줄을 바꿔준다.
안녕하세요? <BR> MySQL 학습 중입니다.
<!-- 결과는 2줄로 출력된다. -->
3. <U> ~ </U>, <B> ~ </B>, <I> ~ </I>: 글자에 밑줄, 굵은 글씨, 이탤릭체의 모양을 지정한다.
<U>이건 밑줄</U> <BR> <B>이건 굵게</B> <BR> <I>이건 이탤릭</I>
4. <FONT> ~ </FONT>: 글자에 크기나 색상을 지정한다.
<FONT color='red' size='10' face='궁서'> 폰트 변경했어요. </FONT>
5.<HR>: 수평선을 그어준다. <HR size='픽셀수'>는 픽셀 수의 폭으로 선을 그어준다.
<HR size='10'>
6. <A> ~ </A>: 클릭하면 다른 페이지가 연결되는 링크를 설정한다.
<A href='http://www.naver.com' target='_blank'> 네이버 연결 </A>
<!-- href: 연결할 주소 지정, target: 링크 클릭 시 창을 어떻게 열지 설정 -->
7. <IMG>: 이미지 파일을 화면에 표시한다.
<IMG src='mouse.png' width=100 height=100>
<!-- src: 파일의 url, width: 가로, height: 세로 -->
9. <TABLE> ~ </TABLE>, <TR> ~ </TR>, <TH> ~ </TH>, <TD> ~ </TD>: 표를 만드는 태그
1) TABLE 태그 안의 행은 TR로 구성된다.
2) 행 안의 열은 TH(제목 열을 표현해서 두꺼운 글씨체) 또는 TD(일반 열)로 구성된다.
<TABLE border=1>
<TR>
<TH>아이디</TH>
<TH>이름</TH>
</TR>
<TR>
<TD>BBK</TD>
<TD>바비킴</TD>
</TR>
</TABLE>
3. PHP 기본 문법
- PHP 코드는 확명명을 *.php로 사용한다.
- PHP 주석
1) 한 줄 주석: //
2) 여러 줄 주석: /* */
→ 파이썬: #, ''' '''
→ MySQL: -- , /* */
- PHP는 행의 끝에 세미콜론을 붙여야 한다.
- PHP는 변수 이름 앞에 $를 붙여서 사용한다.
→ 변수를 출력하려면 print나 echo문을 사용한다.
- 변수 출력 코드
<?php
$a = 100;
print $a;
echo $a;
?>
- PHP의 변수 이름 규칙
1) 제일 앞에 $가 붙어야 한다.
2) 문자와 숫자, 언더바(_)를 사용할 수 있지만, 숫자로 시작할 수 없다.
3) 대소문자를 구별한다.
- PHP 데이터 형식은 int, double, string, boolean, object, array 등이 있다.
- gettype( ) 함수는 변수의 데이터 형식을 보여준다.
- PHP는 별도의 변수 선언이 없으며, 값을 대입하는 순간 변수의 데이터 형식이 결정된다.
- 문자열은 큰 따옴표나 작은 따옴표로 묵어야 한다.
→ 큰 따옴표로 묶은 후, 내부에 필요한 경우 작은 따옴표로 묶어주는 것이 바람직하다.
- 문자열 코드
<?php
$str = "이것이 MySQL이다"; echo $str, "<br>";
$int = 100; echo $int;
?>
- if문 코드
<?php
$a = 100;
$b = 200;
if($a > $b) {
echo "a가 b보다 큽니다.";
} else {
echo "a가 b보다 작습니다.";
}
?>
- if ~ elseif문 코드
<?php
$score = 83;
if ($score >= 90) {
echo "A학점";
} elseif ($score >= 80) {
echo "B학점";
} else {
echo "C학점";
}
?>
- switch ~ case: if ~ elseif와 비슷하게 여러 개의 조건을 처리할 수 있다. (default 부분 생략 가능)
<?php
$score = 74;
switch(intval($score / 10)) {
case 10: // 따로 값을 넣지 않으면 그 아래 값이 들어가는 듯?
case 9:
echo "A학점"; break;
case 8:
echo "B학점"; break;
default:
echo "C학점"; // default는 break 필요 없다.
}
?>
- for문 코드
<?php
for($i=1; $i<=10; $i=$i+1) {
echo $i, " ";
} // 반복할 문장이 하나일 땐 중괄호 생략 가능
?>
<?php
$sum = 0;
for( $i=123; $i<=456; $i=$i+2 ) { // 초깃값, 조건식, 증감식
$sum = $sum + $i;
}
echo "123부터 456까지 홀수의 합계: ", $sum;
?>
- while문은 for문과 다르게 초깃값과 증감식이 없으며, 조건식만 있다.
<?php
$sum = 0;
$i = 123; // 초깃값
while($i<=456) { // 조건식
$sum = $sum + $i;
$i = $i + 2; // 증감식
}
echo "123부터 456까지 홀수의 합계: ", $sum;
?>
- 배열 코드
<?php
$myArray = array(100, 'MySQL', 123.123);
echo $myArray[0], " ", $myArray[1], " ", $myArray[2], "<br>";
$myArray = range(1, 3);
echo $myArray[0], " ", $myArray[1], " ", $myArray[2], "<br>";
$myArray = range(1, 10, 2); // 증가값 생략 가능
echo $myArray[0], " ", $myArray[4], "<br>";
$newArray[0] = 'This'; // 배열 명이 정의되어 있지 않아도 바로 배열 생성
$newArray[1] = 'is';
$newArray[2] = 'MySQL';
echo $newArray[0], " ", $newArray[1], " ", $newArray[2], "<br>";
?>
→ 배열은 꼭 같은 데이터 형식으로 만들지 않고 서로 다른 형식으로 생성할 수도 있다.
- range( ) 함수는 파이썬과 달리 정해둔 값 그대로를 출력한다.
→ ex) range(1, 3): 1, 2, 3 출력
- 배열의 크기를 구하는 함수는 len( )이 아닌 count( )이다.
- 배열 관련 함수
1) shuffle( ): 배열의 내용을 임의로 섞어 준다.
2) foreach(배열명 as 변수): 배열의 값을 차례대로 하나씩 변수에 넣어서 반복한다.
3) sort( ): 배열의 값을 오름차순(asc)으로 정렬한다.
4) rsort( ): 배열의 값을 내림차순(desc)으로 정렬한다.
5) array_reverse( ): 배열의 순서를 역순으로 바꾼다. (배열 자체를 바꾸는 것이 아닌, 새로운 배열을 반환)
- PHP 내장 함수: 파이썬과 비슷하니 책이나 사이트 참조
1) htmlspecialchars( ): HTML 코드를 해석하지 않고 그대로 웹 브라우저에 표시한다.
2) print_r( ): 변수의 내용을 출력한다.
3) 문자열을 이어주기 위해선 단순히 .을 붙여서 이어주면 된다.
→ ex) echo "문자열1"."문자열2"."문자열3";
4. HTML과 PHP 관계
- HTML 파일의 <FORM> 태그: 입력한 정보가 서버의 PHP 파일에 전달될 수 있게 한다.
- <FORM> 태그 안에 데이터를 채우기 위해선 <INPUT> 태그를 사용해야 한다.
- HTML에서 사용자의 아이디와 이름을 입력한 후, PHP 파일에 전달하는 코드
<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
</HEAD>
<BODY>
<FORM method="post" action="receive.php">
아이디 : <INPUT TYPE ='text' NAME="userID">
이름 : <INPUT TYPE ='text' NAME="userName">
<BR><BR>
<INPUT TYPE="submit" value="전송">
</FORM>
</BODY>
</HTML>
- HTML파일의 내용을 받는 PHP 코드
<?php
$userID = $_POST["userID"];
$userName = $_POST["userName"];
echo "전달받은 아이디: ", $userID, "<br>";
echo "전달받은 이름: ", $userName, "<br>";
?>
- POST와 GET 전달 방식의 차이점
1) GET 방식의 결과는 주소 뒤에 '?변수=값&변수=값'방식으로 값이 전달되지만, POST 방식은 주소만 나온다.
→ GET 방식은 전달되는 데이터가 노출되므로 POST를 사용하는 것이 바람직하다.
- HTML 문법으로만 구성된 파일의 확장명을 *.php로 저장해서 사용해도 상관없다.
- <?php ~~ ?>을 사용해 HTML 중간에 PHP 코드를 함께 사용할 수 있다.
'DB & SQL > 이것이 MySQL이다' 카테고리의 다른 글
파이썬 tkinter 사용 방법 (0) | 2022.07.11 |
---|---|
PHP와 MySQL의 연동 (0) | 2022.07.10 |
Visual Studio Code에서 PHP 코드 실행하기 (2) | 2022.07.02 |
MySQL과 공간 데이터 (0) | 2022.06.27 |
전체 텍스트 검색과 파티션 (0) | 2022.06.26 |
댓글