• 검색 결과가 없습니다.

수업 환경 구축

N/A
N/A
Protected

Academic year: 2022

Share "수업 환경 구축"

Copied!
203
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

수업 환경 구축

웹데이터베이스 구축 및 실습

(2)

한림대학교 웹데이터베이스 - 이윤환

구축 환경

• OS : Windows 7

그외 OS의 경우 교재 p26-40 참조

Windows의 다른 버전은 조금 다르게 나타날 수 있 음

• Browser : Google Chrome

다른 브라우저를 사용해도 별 차이 없으나 추후 수업 의 모든 과정은 크롬 사용

http://chrome.google.com

(3)

APM 설치 : AUTOSET6

(4)

한림대학교 웹데이터베이스 - 이윤환

AUTOSET 설치(P40~46)

http://www.autoset.org

(5)

AUTOSET 설치(P40~46)

(6)

한림대학교 웹데이터베이스 - 이윤환

AUTOSET 설치(P40~46)

(7)

AUTOSET 설치(P40~46)

실행 후 사용자 계정 콘트롤이 물어볼 경우 “확인”

(8)

한림대학교 웹데이터베이스 - 이윤환

AUTOSET 설치(P40~46)

(9)

AUTOSET 설치(P40~46)

(10)

한림대학교 웹데이터베이스 - 이윤환

AUTOSET 설치(P40~46)

(11)

AUTOSET 설치(P40~46)

(12)

한림대학교 웹데이터베이스 - 이윤환

AUTOSET 설치(P40~46)

(13)

AUTOSET 설치(P40~46)

(14)

한림대학교 웹데이터베이스 - 이윤환

AUTOSET 설치(P40~46) : 에러발생

(15)

AUTOSET 설치(P40~46) : 에러해결

마우스 오른쪽 클릭

(16)

한림대학교 웹데이터베이스 - 이윤환

AUTOSET 설치(P40~46) : 확인

(17)

AUTOSET 설치(P40~46) : 서버 기동

(18)

한림대학교 웹데이터베이스 - 이윤환

AUTOSET 설치(P40~46) : 서버 기동 에러

(19)

AUTOSET 설치(P40~46) : 서버 기동 에러 해결

(20)

한림대학교 웹데이터베이스 - 이윤환

AUTOSET 설치(P40~46) : 기동 확인

http://localhost

(21)

AUTOSET 설치(P40~46) : 설정 확인

(22)

DESYEDIT

(23)

좋은 에디터? (P.48)

• 찾기와 찾아서 바꾸기 기능이 있는 에디터

정규표현식을 지원하면 Very Good!

• 구문강조기능(Highlighting)이 있는 에디터

• FTP 연결을 통한 원격 파일 생성 및 수정 기능이 있는 에 디터

일반적으로 보안 ftp(sftp)는 상용버전

또한 cvs, subversion, git 등의 버전관리 서비스의 클라이언 트 기능이 지원 되면 Very Good!

• 실행취소와 다시 실행이 자유로운 에디터

• 소스 앞에 몇 번째 줄인지 표시가 되는 에디터

• 무료로 배포되는 에디터

(24)

한림대학교 웹데이터베이스 - 이윤환

DESYEDIT 설치

http://www.desyedit.com

(25)

DESYEDIT 설치

(26)

한림대학교 웹데이터베이스 - 이윤환

DESYEDIT 설치

(27)

DESYEDIT 설치

(28)

한림대학교 웹데이터베이스 - 이윤환

DESYEDIT 설치

(29)

DESYEDIT 설치

(30)

한림대학교 웹데이터베이스 - 이윤환

DESYEDIT 설치

(31)

실습 – 첫번째 PHP 파일 만들기

(32)

한림대학교 웹데이터베이스 - 이윤환

1. 다음을 c:\Autoset6\public_html 에 hello.php로 저장하시오.

<!DOCTYPE html>

<html>

<head>

<?php

$title = “Hello, PHP!”;

?>

<title><?php echo $title;?></title>

</head>

<body>

<h1><?php echo $title;?></title>

</body>

</html>

(33)

2. Web Browser를 열고 다음과 같이 입력하시오.

http://localhost/hello.php

3. Web Browser에서 소스보기를 실시하고 1에 서 입력한 소스 코드와 무엇이 달라졌는지 확인 해 보시오.

(34)

PHP 기본 문법

웹데이터베이스 구축 및 실습

(35)

컴퓨터에게 명령하기

질문 1 : Computer의 사전적 의미는?

질문 2 : 컴퓨터의 저장 단위는?

질문 3 : 0과 1이 의미하는 것은?

(36)

한림대학교 웹데이터베이스 - 이윤환

데이터

컴퓨터에게 명령하기

계산 저장 이동

(37)

컴퓨터에게 명령하기

(38)

한림대학교 웹데이터베이스 - 이윤환

PHP 프로그래밍

웹 환경을 위해 제작된 Server 측 언어

hello.html

http://localhost

요청

응답

http://localhost/hello.html

(39)

PHP 프로그래밍

요청

http://localhost/hello.php

응답

검색

전달

전달

(40)

한림대학교 웹데이터베이스 - 이윤환

PHP 가 하는 일

1. <!DOCTYPE html>

<html>

2. <head>

3. <?php

4. $title = “Hello, PHP!”;

5. ?>

6. <title><?php echo $title;?></title>

7. </head>

8. <body>

9. <h1><?php echo $title;?></title>

10.</body>

11.</html>

1.PHP 문법 검사 2.PHP 번역

3.웹 서버에 전달

(41)
(42)

한림대학교 웹데이터베이스 - 이윤환

PHP 프로그래밍

PHP는 HTML과 한 파일로 작성할 수 있습니다.

프로그래머로 하여금 HTML 부분과 PHP 부 분을 구분하여 프로그래밍 해야 합니다.

앞의 코드에서 3-5번째 줄을 다음과 같이 바 꿔봅시다. (3, 5번째 줄 제거)

$title=“Hello, PHP”;

(43)
(44)

한림대학교 웹데이터베이스 - 이윤환

PHP 프로그래밍

PHP와 HTML 구분하기 (p.66~)

시작태그 끝태그 비고

<?php ?> 기본방법

<script language=“php”> </script> HTML 문법 차용

<% %> ASP 방식

- 설정 파일 수정 필요

(45)

PHP 프로그래밍 – 기초 사항

문장 구별자

PHP가 번역할 구문을 구별해 주어야 합니다.

세미콜론(;)을 이용하여 번역할 단위를 지정합니 다.

일반적으로 문장끝에 사용합니다.

주석

PHP가 번역하지 않는 문자열 입니다.

프로그래머가 소스코드를 유지/보수할 때 유용 합니다.

여러줄 주석 : /* … */

줄바꿈 전까지 주석 : //

(46)

한림대학교 웹데이터베이스 - 이윤환

PHP 프로그래밍 – 기초 사항

예제 파일 : sep_cmnt.php

(47)

PHP 프로그래밍 – 에러 (P.74)

예제 파일 : error.php

(48)

한림대학교 웹데이터베이스 - 이윤환

Parse error:

→ PHP 번역에 문제 발생 syntax error,

→ PHP 구문 오류. 문법 틀림 unexpected T_ECHO

→ 에러 해결을 위한 PHP의 추측

on line 11

→ 에러 발생 지점

(49)

PHP 프로그래밍 – 식별자 (P.78)

식별자(identifier)

다른 무엇과 서로를 식별해 주는 이름.

역할에 맞는 이름이면 좋다.

가급적이면 이름이 충분히 그 역할을 대변하는지 고려

중복된 이름은 없는지?

프로그램 내에서도 서로 다른 역할을 가진 것들을 구분 짓기 위해 식별자를 생성.

동일한 이름을 가진 다른 식별자가 있다면 오류 발생.

(50)

한림대학교 웹데이터베이스 - 이윤환

PHP 프로그래밍 - 식별자

식별자 명명 규칙

1. 문자와 밑줄(_)로 시작.

2. 두 번째 글자부터는 숫자, 문자, 밑줄이 가능.

3. 밑줄 이외의 기호는 사용할 수 없음.

4. 문자는 유니코드(한글포함)도 가능함.

5. 변수는 대소문자를 서로 구분.

PHP는 기본적으로 대소문자를 구분하지 않음.

PHP 키워드나 함수 등에서는 대소문자를 섞어 사용하여도 같은 것으로 구분.

만약 식별자가 변수에 사용된다면 대소문자를

구분하여 서로 다른 것으로 간주함.

(51)

다음 시간에는…

변수 상수 연산자

에 대해 알아봅니다.

(52)

PHP 기본 문법

웹데이터베이스 구축 및 실습

(53)

PHP 기본문법 – 변수 일반

변수

여러 가지 값으로 변할 수 있는 그릇

메모리상 특정 공간에 이름을 붙여 값을 저장

변수 표기 : $식별자 (Ex. $title)

변수임을 표시하는 기호 ‘$’와 변수의 이름이 되는 식별 자를 붙여놓은 형식.

자료형(Type)

( 효율적으로)자료들을 관리하기 위해 변수의 종류 필요

진리값, 정수, 부동소수점수, 문자열, 배열, 객체, 리소스, 널

(NULL) 등 8가지.

(54)

한림대학교 웹데이터베이스 - 이윤환

PHP 기본문법 - 자료형

진리값(boolean)

참(true)과 거짓(false) 두 가지 값만을 가지기 위한 변 수형.

숫자 자료의 경우 0은 거짓, 0이 아닌 다른 모든 수는 참

예제

$condition = true;

$condition = false;

$condition = 1; // 참 or 거짓?

(55)

PHP 기본문법 - 자료형

정수(Integer)

수학적인 의미의 정수를 표시하기 위한 변수형.

예제

$times = 1;

$minus = -1;

$octal = 0123;

$hex = 0x12;

부동소수점수(floating point numbers)

실수를 표현하면서 부동소수점 방식을 사용하는 수

예제

$pi = 3.1415927

$interest = 1.0e-3

(56)

한림대학교 웹데이터베이스 - 이윤환

PHP 기본문법 - 자료형

문자열(String)

일련의 문자들을 표현하고자 할 때 사용.

표시방법

큰 따옴표(“) : 큰 따옴표 내의 변수 유지

작은 따옴표(‘)

히어닥 문법

문자열의 시작과 종료를 알려주는 방식을 이용, 문자열을 보다 편리하게 표현하는 방법.

문자열의 시작을 알릴 때 “<<<“ 다음에 문자열 에 대한 식별자를 표시, 문자열 종료 시 그 식별 자를 다시 표시.

나우닥 문법 (PHP 5.3.0 이상 지원)

히어닥 문법과 유사하나 식별자에 작은 따옴표

가 붙으며, 변수 등의 문자열 해석을 하지 않음.

(57)

PHP 기본문법 - 자료형

예제

$str1 = “큰 따옴표(\”)로 묶습니다.”;

$str2 = ‘작은 따옴표(\’)로 묶습니다.’;

$times = 2;

$str3 = “3곱하기 $times 는 6입니다.”;

$str4 = ‘3곱하기 $times 는 6입니다.’;

$hereDoc = <<< EOD 문자열입니다.

EOD;

$nowDoc = <<< ‘EOT’

문자열입니다.

‘EOT’;

(58)

한림대학교 웹데이터베이스 - 이윤환

PHP 기본문법 - 자료형

리소스(RESOURCE)

파일이나 데이터베이스 그리고 이미지 작업 과 같은 외부적인 자원을 나타내는 데 사용하 는 변수형.

NULL

아무 값도 갖지 않는 변수.

변수에 아직 아무런 값도 할당하지 않았을 때 나 상수로 NULL을 직접 할당했을 때 그리고 unset 함수로 변수 제거 시 해당 값을 NULL 이라 표현.

(59)

PHP 기본문법 – 변수

변수 발생에 따른 분류

사용자 변수

식별자에 $를 붙혀 프로그래머가 생성하는 변수

미리 정의된(Predefined) 변수

웹 서버의 설정값이나 서버 시스템의 환경 그리고 사용자의 입력과 관련한 변수

인위적으로 값을 수정하거나 일반 변수로 사용 불가

배열로 되어 있어 $_ENV[‘OS’]와 같이 접근

외부에서 전달된 변수

HTML 폼을 통해 전달된 변수와 쿠키로 전달된 변수.

사용자의 브라우저에서 작성된 값이 웹 서버에 전달

된 변수.

(60)

한림대학교 웹데이터베이스 - 이윤환

PHP 기본문법 – 변수

변수의 사용

변수는 할당(및 선언)과 호출로 사용된다.

할당시에는 연산자(=)을 사용한다.

$a = 123; // 숫자형 자료

$b = “string”; // 문자열 자료

$c = true; // 진리값

호출은 실제 변수가 갖는 값을 얻는 것으로 변수명을 적어주기만 하면 된다.

echo $a; // $a의 값 123 반환

echo $b; // $b의 값 “string”반환

echo $c; // $c의 값 true 반환

(61)

PHP기본문법 - 상수

상수

변수는 값이 사용자에 의해 변경될 수 있는 반면 상수는 변경될 수 없는 자료이다.

앞선 true와 false는 문자열인데 왜 괄호를 사용하지 않았을까?

PHP에서 상수의 사용

상수의 선언은 define() 함수를 사용한다.

bool define (string name, mixed value [,bool case_insensitive])

상수의 호출은 일반 PHP 변수와는 다르게 앞에 $를 붙히지 않는다.

상수의 호출을 위해 constants() 함수를 사용한다.

mixed constant (string name)

(62)

한림대학교 웹데이터베이스 - 이윤환

PHP기본문법 – PHP 함수

PHP는 다양한 함수를 갖고 있다.

모든 함수를 알기한 쉽지 않다.

PHP Manual을 보는 연습을 하자

http://www.php.net/manual/en/

함수명을 알 경우

(63)

PHP기본문법 – PHP 함수

함수명을 모를 경우

기능별로

찾아본다.

(64)

한림대학교 웹데이터베이스 - 이윤환

PHP기본문법 – PHP 함수

Category

기본정보

기본형태 - 함수원형

(65)

PHP기본문법 – PHP 함수

전달인자 목록

• 함수가 작동하기 위해 필요한 정보들의 리스트 ,로 구분

• 대괄호[]는 선택가능한 정보로 생략가능 하며 생략시 = 뒤의 값 사용

함수명

• 함수의 이름, 호출시 사용 반환형

• 함수가 수행하고 반환하는 자료의 형태

(66)

한림대학교 웹데이터베이스 - 이윤환

PHP기본문법 – PHP 함수

전달인자

설명

(67)

PHP기본문법 – PHP 함수

반환값 설명

사용예

(68)

한림대학교 웹데이터베이스 - 이윤환

PHP기본문법 – PHP 함수

관련 함수

사용자

첨언

(69)

PHP 기본문법 - 연산자

연산자는 역할에 맞게 계산하고 결과를 돌려준다.

산술연산자 – op1.php

연산자 설명 예($a=5, $b=3) 결과

이 항

+ 덧셈 수행 $a + $b 8

- 뺄셈 수행 $a - $b 2

* 곱셈 수행 $a * $b 15

/ 나눗셈 수행 $a / $b ?

% 나눈 나머지 값 반환 $a % $b 2

항 - 음수화 부호 -$a -5

(70)

한림대학교 웹데이터베이스 - 이윤환

PHP 기본문법 - 연산자

비교연산자 : 결과로 진리값을 반환( op2.php )

연산자 설 명 예($a=5, $b=3) 반환값

== 같다(동치) $a == $b FALSE

=== 같다(동치이고 동형) $a === $b FALSE

< 보다 작다 $a < $b FALSE

> 보다 크다 $a > $b TRUE

<= 작거나 같다 $a <= $b FALSE

>= 크거나 같다 $a >= $b TRUE

!= 같지 않다 $a != $b TRUE

<> 같지 않다 $a <> $b TRUE

(71)

PHP 기본문법 - 연산자

논리연산자 (op3.php)

연산자 축약형

+=

$a += 2; // $a = $a + 2;

연산자 설 명 예($a=T, $b=F) 반환값

&& (and) 모두 참이면 참(논리곱) $a && $b FALSE

|| (or) 둘중 하나만 참이면 참(논리합) $a || $b TRUE xor 하나만 참일때 참(배타적논리합) $a xor $b TRUE

! 거짓일때 참, 참일때 거짓(부정) !$a FALSE

(72)

한림대학교 웹데이터베이스 - 이윤환

PHP 기본문법 - 연산자

기타연산자

문자열 연결 연산자 : .(period, 점)

연산자 좌우의 문자열을 합친다.

“Hello, “ . “World!” è Hello, World!

삼항연산자 : (조건)?(조건이 참) : (조건이 거짓)

Boolean 조건을 판단한 뒤 참과 거짓에 맞는 코드 를 수행한다. 이때 각 코드는 한 개의 문장으로 이 루어져야 한다.

5<3 ? printf( “TRUE”) : printf(“FALSE”);

오류 억제 연산자 : @

객체 연산자 : new, ->

(73)

다음 시간에는

함수

변수의 범위 조건문

반복문

에 대해 학습합니다.

(74)

PHP 기본 문법

웹데이터베이스 구축 및 실습

(75)

함수

함수(function)

함수는 한번 정의될 수 있는 코드 블록이며 프로그램의 다른 부 분에서 작동시킬 수 있다.

함수는 반환값, 함수 이름, 전달 인자, 함수 내용으로 구성.

모듈화하여 알기 쉽고 구조화된 응용 프로그램 작성.

자주 반복되어야 하는 코드를 함수로 만들어 한 곳에 저장하고 프로그램의 필요한 곳에서 호출하여 사용한다.

function 함수 이름 (매개변수의 리스트) { 함수 본문

return 반환값 } // 함수 정의

호출시 함수 이름(전달인자의 리스트)

(76)

한림대학교 웹데이터베이스 - 이윤환

함수의 선언과 사용

<?php

//fn_ex.php

function mySum($x, $y) { $sum = $x + $y;

return $sum;

}

$a = 3;

$b = 5;

echo "$a과 $b의 합은 " . mySum($a, $b) . "<br>";

echo gettype(mySum($a, $b));

?>

$a의 값 3전달

$b의 값

5전달

(77)

전달 인자의 여러가지 성질

Passed by reference

일반적으로 전달인자에 의해 값이 전달되는 것 은 값에 의한 전달을 하나 참조에 의한 전달이 필요할 때 함수 선언시 전달인자의 이름 앞에

“&”를 붙힌다.

Example : cbr.php

(78)

한림대학교 웹데이터베이스 - 이윤환

function swap_cbr(&$a, &$b) {

echo "Into the function swap_cbr<br />";

printf("Before Swap<br /> \$a = %s, \$b = %s<br />", $a, $b);

$temp = $a;

$a = $b;

$b = $temp;

}

$a = 3;

$b = 5;

echo "Call swap_cbr()<br />";

swap_cbr($a, $b);

printf("After Swap<br /> \$a = %s, \$b = %s<br />", $a, $b);

$a 위치 전달

$b

위치

전달

(79)

기본 전달 인자

호출시 해당 인자를 호출하지 않아도 기본값처 럼 인식되는 전달 인자를 만들수 있다.

선언시 전달인자 = “기본값”의 형태로 선언한 다.

Example : dparam.php

(80)

한림대학교 웹데이터베이스 - 이윤환

function makeyogurt ($type = "acidophilus", $flavour) { return "Making a bowl of $type $flavour.\n";

}

@printf("%s", makeyogurt ("raspberry"));

function makeyogurt2 ($flavour, $type = "acidophilus"){

return "Making a bowl of $type $flavour.\n";

}

echo "<br />";

echo makeyogurt2 ("raspberry","aaaaa");

(81)

변수의 범위와 수명

변수의 범위는 프로그램의 어떤 부분에서 변수를 액세 스 할 수 있는지 결정한다.

global 변수명,

$GLOBALS[“변수명”]

Example : globals.php

정적 변수 : 한번만 초기화 되고 계속 값을 유지한다.

static 변수명

Example : static.php

Local

Global

(82)

한림대학교 웹데이터베이스 - 이윤환

PHP 기본문법 – 변수 일반

변수

여러 가지 값으로 변할 수 있는 그릇

메모리상 특정 공간에 이름을 붙여 값을 저장

변수 표기 : $식별자 (Ex. $title)

변수임을 표시하는 기호 ‘$’와 변수의 이름이 되는 식별 자를 붙여놓은 형식.

자료형(Type)

( 효율적으로)자료들을 관리하기 위해 변수의 종류 필요

진리값, 정수, 부동소수점수, 문자열, 배열, 객체, 리소스, 널

(NULL) 등 8가지.

(83)

구구단의 2단을 구해보자!

<?php

// 2dan.php

echo "2 * 2 = ", 2*2, "<br />\n";

echo "2 * 3 = ", 2*3, "<br />\n";

echo "2 * 4 = ", 2*4, "<br />\n";

echo "2 * 5 = ", 2*5, "<br />\n";

echo "2 * 6 = ", 2*6, "<br />\n";

echo "2 * 7 = ", 2*7, "<br />\n";

echo "2 * 8 = ", 2*8, "<br />\n";

echo "2 * 9 = ", 2*9, "<br />\n";

?>

(84)

한림대학교 웹데이터베이스 - 이윤환

반복문(LOOP)

for : 전통의 반복문

for문은 전통의 반복문으로 조건식이 참인 상황 에서만 반복 수행할 문을 수행한다.

for문은 진입조건 Loop이며 그 의미는 처음에 for문에 진입하기 위해서 조건식이 참이어야 한 다는 뜻이다. 즉 진입시(처음부터) 조건식이 거 짓이면 Loop를 수행하지 않는다.

for(초기식 ; 조건식 ; 증감식) {

반복수행할 Code Block

}

(85)

for를 사용하여 2단 구하기

<?php

// 2dan-for.php

for($i = 2; $i < 10; $i++) {

echo "2 * $i = ", 2*$i, "<br />\n";

}

?>

(86)

한림대학교 웹데이터베이스 - 이윤환

중첩된 for

<?php

// googoo.php

for($i = 2; $i < 10; $i++) {

echo "${i}단 ====================" . "<br />\n";

for($j = 1; $j < 10; $j++) {

echo "$i * $j = ", $i*$j, "<br />\n";

} }

?>

(87)

조건식만 존재하는 반복문 – while

while문은 역시 반복문으로 조건식이 참인 상황에서만 반복 수행할 문을 수행한다.

코드 블록 내에서 조건의 대상이 상태가 변하 여 false가 되면 반복 블록을 탈출한다.

while 역시 진입조건 Loop이다

while(조건식) {

반복수행할 Code Block

}

(88)

한림대학교 웹데이터베이스 - 이윤환

while을 이용한 구구단

<?php

//googoo-while.php

$i=2;

while($i < 10) {

echo "${i}단 ====================" . "<br />\n";

$j = 2;

while($j < 10) {

echo "$i * $j = ", $i*$j, "<br />\n";

$j++;

}

$i++;

}

?>

(89)

조건문

양자 택일문 - if

if문은 전통의 조건 처리문으로 조건이 참인지 거짓인지 두가지만을 판단하여 처리하는 문이다.

if문은 확장 사용하여 다중 조건 처리가 가능하다. (else if 사용)

If (조건) {

조건이 참일때 실행할 Code Block } else {

조건이 거짓일때 실행할 Code Block

}

(90)

한림대학교 웹데이터베이스 - 이윤환

앞선 2단의 예에서 홀수단만 구하기

<?php

// 2dan-for-if.php

for($i = 2; $i < 10; $i++) { if($i % 2 == 1) {

echo "2 * $i = ", 2*$i, "<br />\n";

} else {

echo "짝수단입니다." . "<br />\n“;

} }

?>

(91)

2단 중에서 홀수단과 짝수단 중에서 3의 배수단 구하기

<?php

// 2dan-for-if-2.php

for($i = 2; $i < 10; $i++) { if($i % 2 == 1) {

echo "2 * $i = ", 2*$i, "<br />\n";

} else if($i % 3 == 0) {

echo "짝수단중 3의 배수 단" . "2 * $i = “ , 2*$i , "<br />\n";

} else {

echo "짝수단중 3의 배수가 아닙니다." . "<br />\n";

} }

?>

(92)

한림대학교 웹데이터베이스 - 이윤환

다중 택일문 switch

switch문은 다중 택일문으로 조건의 상황에 따른 실 행 코드를 선택할 수 있도록한다.

if문과의 차이는 if는 조건이 참과 거짓만을 구분하는 비해 조건의 상태에 따른 구분을 한다.

switch (조건) {

case 경우 1:

문장;

break;

default :

문장;

break;

}

(93)

2단에서 곱해지는 단에 따라 출력을 다르게 한다.

<?php

// 2dan-for-switch.php for($i = 2; $i < 10; $i++) { $times = $i * 2;

switch($times % 3) { case 0 :

echo "[0] :" . "2 * $i = ", 2*$i, "<br />\n";

break;

case 1 :

echo "[1] :" . "2 * $i = ", 2*$i, "<br />\n";

break;

default :

echo "[2] :" . "2 * $i = ", 2*$i, "<br />\n";

break;

} }

?>

(94)

한림대학교 웹데이터베이스 - 이윤환

그 외의 반복문

유일한 탈출조건 loop : do ~ while

구조

기본적인 사용법은 while과 동일

반복 수행할 코드 블록을 무조건 한번 수행한 후에 수식이 참이면 반복하고 거짓이면 반복을 종료한다.

do {

반복 수행할 코드 블럭 } while (수식)

(95)

그 외의 반복문

Ex. other_loop.php

<?php

$howMany = 5;

$myMineral = 50;

echo "SCV를 생산합니다.<br />\n";

$i = 1;

do {

echo $i . "번째 SCV를 생산했습니다.<br />\n";

$myMineral -= 50;

$i++;

} while ($myMineral >= 50 )

?>

(96)

한림대학교 웹데이터베이스 - 이윤환

그 외의 반복문

배열 탐색에 편리한 foreach

구조

일반 배열(인덱스로 배열 원소 지정)의 경우 현재의 배열원소에서 끝까지 반복을 하면서 원소의 값을 값이 저장될 변수 에 저장한다

연관배열(문자열 키로 배열 원소 지정)의 경우 현재의 배열원소에 서 끝까지 반복을 하면서 키를 키가 저장될 변수 에 저장하고 해당 원소의 값을 값이 저장될 변수 에 저장한다

foreach (배열명 as 값이 저장될 변수) { 반복할 코드 블럭

}

foreach (배열명 as 키가 저장될 변수 => 값이 저장될 변수) { 반복할 코드 블럭

}

(97)

그 외의 반복문

<?php

$arr = array("one", "two", "three");

reset($arr);

foreach ($arr as $value) {

echo "Value: $value<br />\n";

}

$arr = array("one", "two", "three");

reset($arr);

foreach ($arr as $key => $value) {

echo "Key: $key; Value: $value<br />\n";

}

$arr = array("one“=>1, "two“=>2, "three“=>3);

reset($arr);

foreach ($arr as $key => $value) {

echo "Key: $key; Value: $value<br />\n";

}

(98)

한림대학교 웹데이터베이스 - 이윤환

다음 시간에는

HTML Form

에 대해 학습합니다.

(99)

HTML FORM과 배열

웹데이터베이스 구축 및 실습

(100)

한림대학교 웹데이터베이스 - 이윤환

FORM

• HTML의 태그 중에 하나

<FORM>…</FORM>

• 사용자로부터 값을 입력 받을 수 있는 방법

• 하위 Form 요소에 대한 콘테이너

<FORM NAME="폼이름"

ACTION="데이터를 보낼 주소"

METHOD="전송방식“

ENCTYPE=“암호화방식”>

하위 FORM 요소

</FORM>

(101)

FORM

Form 태그의 속성.

NAME : HTML 문서 내에서 구별지을 이름

ACTION

사용자가 입력한 폼 정보를 전달할 주소를 지정하는 항목.

데이터를 전달받는 주소는 반드시 PHP와 같은 서버 스크립트 파 일이어야 함.

METHOD

데이터를 전달하는 방식을 정의

POST와 GET 방식이 있음.

POST : HTTP 바디(Body)에 데이터를 실어 보냄.

GET : URL을 통해 데이터를 전달.

ENCTYPE

폼 데이터의 인코딩(encoding) 방법 지정.

데이터 전송 방식이 POST일 경우에만 적용됨.

application/x-www-form-urlencoded 와 multipart/form- data 두 가지 종류가 있음.

(102)

한림대학교 웹데이터베이스 - 이윤환

FORM : GET VS. POST

GET 방식 : URL로 전달 (길이 제약)

파일 이름 다음에 물음표(?) 기호를 사용하여 “?변수명=전달될 값”

과 같은 방식으로 동작.

ex: /index.php?name=brown

두 개 이상의 값을 전달하고자 할 때는 & 기호를 통해 전달.

ex: ?name=brown&homepage=http://ezphp.net

POST 방식 :

REQUEST BODY를 통해 전달

데이터의 길이에 대한 제약이 없어 매우 큰 용량의 정보 전송 시 사 용 가능.

PHP 설정에서 POST 방식으로 전송할 수 있는 크기를 제한하 고 있음.

php.ini 파일에서 max_post_size 값을 조절하여 제한을 변

경할 수 있음.

(103)

FORM 하위 요소 : <INPUT>

(104)

한림대학교 웹데이터베이스 - 이윤환

FORM 하위 요소 : <INPUT>

Text Type

한 줄짜리의 Text 입력상자를 만든다(최대 255자).

<INPUT TYPE="text" NAME="email" VALUE="id@domain"

SIZE="40" MAXLENGTH="50">

NAME : 전달될 Form의 이름(전달받는 PHP File에서는 변수명이 된다.)

VALUE : 초기값

MAXLENGTH : 최대길이

SIZE : 박스의 길이

PASSWORD

Text와 동일하나 입력시 문자열이 ***로 나타난다.

Example : inputPwd.html

(105)

FORM 하위 요소 : <INPUT>

HIDDEN

Browser에는 나타나지 않으며 미리 정한 값이 전달된다.

Source 보기로는 나타난다.

SUBMIT

Form이 전달된다.

RESET

입력한 Form의 값을 모두 지운다.

(106)

한림대학교 웹데이터베이스 - 이윤환

FORM 하위 요소 : <INPUT>

RADIO

여러 개의 선택요소중 한 개만 선택한다.

<INPUT TYPE=“RADIO” NAME=“gender” VALUE="M"

checked>남성

<INPUT TYPE=“RADIO” NAME=“gender” VALUE="F">

여성

checked : 기본 선택 값에 붙힌다.

여러 개의 구성요소는 동일한 NAME을 통해 Group이 이루어 지고 실제 전달되는 값은 VALUE에 의한 값이 전달된다.

Example : inputRadio.html

(107)

FORM 하위 요소 : <INPUT>

CHECKBOX

여러 개의 구성요소를 선택하는 데 사용한다.

<INPUT TYPE=“CHECKBOX” NAME=“check1”

VALUE=“win98” checked> win98

<INPUT TYPE=“CHECKBOX” NAME=“check2”

VALUE=“win2k”> win2k

NAME이 동일할 경우 나중에 선택된 변수만 선택이 된 다.

Checkbox는 사용자가 어떤 것을 선택할 지 모르므로 어떤 값을 선택했는지 알려면 어떻게 해야 할까?

다음 예제를 강의 보조 자료에서 확인바랍니다.

Example : check-from.php, check.php

(108)

한림대학교 웹데이터베이스 - 이윤환

FORM 하위 요소 : <TEXTAREA>

TEXTAREA

여러줄에 걸친 Text를 입력받는다.

<TEXTAREA NAME="comment" ROWS="4"

COLS="30" >기본값</TEXTAREA>

ROWS : Text 입력 상자의 줄 수

COLS : Text 입력 상자의 열 수

Example : inputTextArea.html

(109)

FORM 하위 요소 : <SELECT>

SELECT

여러 개의 구성 요소중 선택한다.

구성 요소는 <option>을 이용하여 지정한다.

전달되는 것은 역시 value의 값이 전달

<select name="age">

<option value="10">10 - 20세 사이</option>

<option value="20" selected>21 - 30세 사이

</option>

</select>

SELECTED : 미리 선택된 요소

Example : inputSelect.html

(110)

한림대학교 웹데이터베이스 - 이윤환

배열

“변수 보따리”

PHP 프로그래밍에서 유용하게 사용할 수 있는 자료형.

- PHP에서는 다양한 배열 함수가 제공되어 편리함.

하나 이상의 데이터를 저장할 수 있음.

- 배열 속에 배열을 다시 저장할 수 있음.

배열의 구조

기존 변수 이름 뒤에 “[인덱스]”를 덧붙인 모양을 가짐.

하나의 변수 이름에 여러 가지의 값을 가지기 때문에 “배열의 몇 번째 값”과 같은 뜻의 인덱스를 사용함.

두 값의 구분은 [0],[1] 등으로 몇 번째에 저장되어 있는지를 표기하여 구분.

숫자 인덱스를 사용하지 않고 사용자가 지정한 구분자를 두어 배열 의 값을 구분할 수 있음

<?php

$a[0]="abc";

$a[1] ="def";

$b["foo"]=13;

?>

(111)

배열

배열의 선언과 할당

$array[0] = “Professional”;

$array[arr] = “Preprocessor”;

$array = array(“Professional”, “Hypertext”,

“Preprocessor”);

$array = array(“first” => “Professional”);

(112)

한림대학교 웹데이터베이스 - 이윤환

배열

배열의 종류

일반 배열(Index사용 : 숫자에 의한 접근)

할당 : $fruit = array(“사과”, “배”, “복숭아”, “딸기”);

사용 : $fruit[0];

연관 배열(Key 사용 : 문자열로 접근)

할당 : $phone = array(“home” => “123-4567”,

“office” => “765-4321”);

사용 : $phone[“home”];

Example : arrex.php

관련 함수

array array ( [mixed ...])

bool print_r ( mixed expression [, bool return] )

Example : print_r.php

(113)

배열 관련 함수

http://www.php.net/manual/en/ref.array.php 정렬하기 : 낮은 값에서 높은 값으로 정렬

sort : 배열의 값에 따라 정렬한다.

bool sort ( array &array [, int sort_flags] )

sort_flags는 PHP4 부터 추가된 상수로 다음과 같다.

SORT_REGLUAR : 일반적인 방법으로 원소 비교(자료형을 바꾸지 않 는다.)

SORT_NUMERIC : 숫자형으로 비교

SORT_STRING : 문자열형으로 비교

정렬을 한 후의 Index는 값의 순서에 맞춰진다.

asort : 연관 배열의 값에 따라 정렬한다.

bool asort ( array &array [, int sort_flags] )

정렬을 한 후의 Key는 값이 원래 가지고 있는 key를 유지한다.(키 와 데이터의 연관성 유지)

(114)

한림대학교 웹데이터베이스 - 이윤환

배열 관련 함수

ksort : 연관배열의 Key에 따라 정렬한다.

bool ksort ( array &array [, int sort_flags] )

키와 데이터의 연관성 유지

Ex. sort.php

다음의 코드를 실행 시키면 어떤 결과가 나오리라 예상되나?

본인의 예상과 일치하는지 반드시 강의보조자료를 통해 확인하기바 랍니다.

<?php

$arr = array(“orange”, “apple”, “lemon”);

$arr2 = array(“yellow”=>”lemon”, “red”=>”apple”, “orange”=>”orange”);

print_r($arr);

print_r(sort($arr));

print_r($arr2);

print_r(asort($arr2));

print_r($arr2);

print_r(ksort($arr2));

?>

(115)

배열 관련 함수

배열 재배치

shuffle : 배열을 임의대로 섞는다.

bool shuffle ( array &array )

임의로 배열을 섞기 위해 PHP 4.2.0 미만에서는 srand()와

mt_srand()를 이용해서 난수값 생성기를 초기화하여야 하나 4.2.0 이상부터는 난수값 생성기 초기화.

array_reverse : 배열을 받아서 역순으로 저장한 배열 반환.

array array_reverse ( array array [, bool preserve_keys] )

preserve_key가 TRUE일 경우 키를 보존한다.

인덱스를 0, 1, 2를 가지는 배열을 array_reverse(배열명, TRUE) 라고 하면 인덱스도 2, 1, 0 이런 식으로 역순으로 갖는다.

array_flip : 배열의 키와 해당 값을 서로 바꾼 배열 반환.

array array_flip ( array trans )

키와 값을 바꿀때 서로 같은 값이 있는 배열의 경우 충돌이 일어나게 되고 가장 마지막에 바꾼 것만 결과로 남는다.

(116)

한림대학교 웹데이터베이스 - 이윤환

배열 관련 함수

배열의 기본 정보

count : 배열의 원소의 개수를 반환한다.

int count ( mixed var [, int mode] )

http://www.php.net/manual/pt_BR/function.count.php

array_keys : 배열의 모든 키를 배열로 반환한다.

array array_keys ( array input [, mixed search_value] )

http://www.php.net/manual/pt_BR/function.array- keys.php

array_values : 배열의 모든 값들을 반환한다.

array array_values ( array input )

http://www.php.net/manual/pt_BR/function.array- values.php

Ex. array_info.php

(117)

배열 관련 함수

배열 탐색 함수

current : 현재의 배열 커서(포인터)가 가리키는 원소 반환

http://www.php.net/manual/pt_BR/function.current.p hp

reset : 배열의 내부 포인터(커서)를 처음으로 이동하고 값 반환

http://www.php.net/manual/pt_BR/function.reset.php

end : 배열의 내부 포인터를 가장 끝 원소로 이동하고 값 반환

http://www.php.net/manual/pt_BR/function.end.php

prev : 배열의 내부 포인터를 이전 원소로 이동시키고 해당 원소의 값 반환

http://www.php.net/manual/pt_BR/function.prev.php

next : 배열의 내부 포인터를 다음 원소로 이동시키고 해당 원소의 값 반환

http://www.php.net/manual/pt_BR/function.next.php

Ex. array_walking.php

(118)

객체 그리고,

데이터의 연결 유지

웹데이터베이스 구축 및 실습

(119)

객체 지향 프로그래밍

함수(기능) 중심 vs. 객체지향 프로그래밍

함수 중심

기능에 초점을 맞추어 순차적으로 어떤 기능들을 수행하여야 하는지를 표현

수행하여야 하는 기능들을 함수화

처리 순서를 고려하여 작성해둔 함수 호출

객체지향

기능이 아닌 데이터에 초점

객체라는 단위로 모든 처리 표현

모든 사물을 속성(property)과 기능(method)을

가진 객체로 간주

(120)

한림대학교 웹데이터베이스 - 이윤환

객체 지향 프로그래밍

클래스(Class) 키워드

메소드와 속성 정의.

사람

속성

이름 나이

키 체중 기능

먹는다 걷는다 말한다

class Human {

public $Name;

public $Age;

public $Height;

public $Weight;

public function Eat ( $foods ) {

echo “우걱우걱~ 맛있는”. $foods . “<BR>”;

}

public function Walk ( $destination ) {

echo $destination . “까지 걸어요.<BR>”;

}

public function Talk ( $words ) { echo $words . “<BR>”;

} }

(121)

객체 지향 프로그래밍 - 속성

속성

데이터

표현하고자 하는 대상이 가질 수 있는 속성 값

(class 문 내에서)속성의 이름 지정

속성 값은 메소드에 의해 변경

초기값은 생성자라는 특수한 메소드에 의해 지정

제한자에 의해 접근 레벨을 달리할 수 있음

객체지향 프로그래밍에서는 직접 속성값을 변경하 지 않고 메소드만 외부에 노출

노출된 메소드에 의해 값 변경

상속 등에서 접근 제한자를 통해 변경 가능한 범위

지정

(122)

한림대학교 웹데이터베이스 - 이윤환

객체 지향 프로그래밍 - 메소드

생성자(Constructor)

class 문 내에서 사용

객체 초기화

일반적으로 클래스의 이름과 동일한 메소드

PHP5에서는 __construct()라는 이름의 메소드

반드시 필요한 것이 아니므로 생략 가능

function __construct($hname) { $this->Name = $hname;

$this->Age = 1;

}

$this : 현재의 클래스를 가리키는 변수

이를 이용하여 클래스 내의 멤버 변수나 함수에 접근 가능.

-> : 속성과 메소드명을 다룸

변수의 경우 변수 앞의 “$” 기호를 제외해야 함.

(123)

객체 지향 프로그래밍 - 메소드

소멸자(destructor)

객체 소멸시 해야 하는 일 정의.

__destruct()라는 이름

파라미터를 가지지 못함.

function __destruct() {

$this->Talk( “창문을 닫아 주오!”);

}

(124)

한림대학교 웹데이터베이스 - 이윤환

객체 지향 프로그래밍 – 객체 사용

인스턴스(Instance) 생성하기

클래스를 통해 사용할 객체 생성

new 키워드 사용

전달인자는 생성자의 전달인자

<?php

$charles = new Human(‘철수’);

$younghee = new Human(‘영희’, 1, 50, 3.5);

$charles = NULL; //철수 객체 제거

$younghee = NULL; //영희 객체 제거

?>

(125)

객체 지향 프로그래밍 – 객체 사용

객체의 속성과 기능 사용하기

“->” 사용

여기서 사용된 속성과 메소드는 public

<?php

$charles = new Human(‘철수’, 5); //5살짜리 철수를 생성합니다.

$charles->Talk($charles->Age); //철수는 몇 살?

$charles->Eat(“dinner”); //철수야! 밥 먹자~

//밥을 먹고 난 후 철수의 키와 몸무게가 늘었다.

$charles->Height = 110; // 110 cm

$charles->Weight = 22; // 22 Kg

?>

(126)

한림대학교 웹데이터베이스 - 이윤환

객체 지향 프로그래밍 – 상속

기존의 클래스의 속성과 기능을 상속받아 새로운 클 래스 정의.

최상위 클래스는 가장 일반적인 요소의 추상화

상속의 과정은 세분화의 과정

extends 키워드 사용

<?php

class Baby Extends Human { // 인간 클래스 상속 function 모유먹기 () { echo “냠냠~”; }

function 천사와대화 () { echo “옹알~ 옹알~”; } }

$재민 = new Baby(‘재민’); //아기 클래스를 이용해 재민이 객체 생성

$재민->천사와대화(); // 옹알~ 옹알~

?>

(127)

객체 지향 프로그래밍 – 접근제한자

클래스 내부 접근을 위한 세 가지 키워드.

클래스 설계 시 자신이 설계한 클래스를 보다 안 전하게 사용하기 위해 외부로 공개된 함수와 변 수로만 클래스를 접근하여 사용

제한자 설 명

public 외부에서 접근 가능

protected 상속 계통에서만 접근 가능

private 클래스 내부에서만 접근 가능

(128)

데이터 유지 방법

쿠키와 세션

(129)

쿠키(COOKIE)

필요한 정보를 클라이언트 측에 보관하는 방법

쿠키는 웹 페이지로의 연속되는 방문 사이에 또 는 웹 사이트 내에서 다른 페이지들간의 방문 사 이에 상태(state)를 유지하는 문제를 해결하기 위해 개발되었다.

쿠키는 웹 서버들이 클라이언트의 하드 드라이 브 상에 데이터를 저장하고 검색한다.

“name = value” 형태의 간단한 텍스트 문자열 이며 클라이언트쪽에 지속적으로 저장된다.

(130)

한림대학교 웹데이터베이스 - 이윤환

쿠키(COOKIE)

PHP에서 쿠키 다루기

bool setcookie (쿠키이름, 쿠키값, 만료시간, 경로, 도메인, 보안);

[표6-1] setcookie 함수의 인자

(131)

쿠키(COOKIE)

Cookie 사용하기

해당 쿠키명이 키인 $_COOKIE 연관배열

Example : cookie.php vs. non-cookie.php

Cookie 삭제하기

setcookie(“삭제할 Cookie 변수명”)

setcookie(“삭제할 Cookie 변수명”, “값”, time()-3600)

cookie 변수를 과거로 보낸다. 현재에는 유효하지 않다.

함정

setcookie를 사용하여 Cookie를 생성하기 전에 어떠한 데

이터도 Client에 보내지면 안된다.

(132)

한림대학교 웹데이터베이스 - 이윤환

세션(SESSION)

세션은 쿠키와 유사하나 웹 서버에 저장됨.

쿠키는 사용자의 컴퓨터에 저장되므로 사용자가 홈페이 지에 들어오는 것은 알 수 있으나 로그아웃 하지 않고 나 갈 경우 웹 서버에서 알 수 없음.

세션은 서버 측에 존재하므로 웹 서버가 주기적으로 세 션의 상태를 확인 가능.

특정 시간 동안 웹 사이트 내에서 어떠한 이동도 발생하지 않을 경우 사용자가 나간 것으로 간주하고 세션 삭제 가능.

[그림6-17] 세션의 저장

(133)

세션(SESSION)

세션의 제거

서버의 하드디스크 용량의 문제 및 세션의 관리를 위해 제거

주기적으로 관리하여 필요 없다고 느끼는 세션을 지움.

기본적으로 24분을 기준으로 하여 세션 삭제

보안

세션은 서버 측에 저장되므로 세션 값을 사용자가 변조할 수 없음.

무작위의 숫자로 이루어진 세션 ID를 사용자에게 발급, 서버 측에 기록함.

웹 서버는 사용자의 세션 ID를 확인하여 사용자의 상태 유지.

그러나 주기적으로 상태를 확인하고, 서버 측에 정보가 저장되므로

웹 서버에 부담을 줌

(134)

한림대학교 웹데이터베이스 - 이윤환

세션(SESSION)

세션 시작하기

PHP에서 사용하기 위해 세션을 시작해야 함.

session_start()

쿠키와 마찬가지로 어떤 정보도 클라이언트에 전달되기 전에 사용

세션을 시작하면 사용자에게 세션 ID가 발급됨.

PHPSESSID라는 이름으로 쿠키로 기록

1 <?php

2 session_start();

3 ?>

(135)

세션(SESSION)

세션 변수 등록하기

PHP 4.1 버전 이전에는 세션에 사용되는 변수를 별도로 등록.

최신 버전의 PHP에서는 세션 변수를 사용.

$_SESSION 연관배열을 사용하여 세션 변수를 등록하고 값 저장.

[예제 6-7] 세션 변수 등록.

1 <?php

2 session_start();

3 $_SESSION['message'] = 'Welcome to PHP world!<BR>';

4

5 ?>

6 <a href="read_session.php">다음 페이지</a>

(136)

한림대학교 웹데이터베이스 - 이윤환

세션(SESSION)

세션 변수 사용하기

$_SESSION 배열을 사용하여 세션 변수를 사용.

session_id() 함수 : 현재 사용자의 세션 ID

//read_session.php 1 <?php

2 session_start();

3

4 echo $_SESSION['message'];

5 echo "<P>";

6 echo "PHPSESSID=" . session_id();

7 ?>

(137)

MySQL을 이용한 데이터베이스 실습

웹데이터베이스 구축 및 실습

(138)

한림대학교 웹데이터베이스 - 이윤환

데이터베이스

데이터 중복의 최소화

데이터의 무결성.

DataBase Management System

복수 사용자 관리

다수의 사용자에 의해 접근되므로 동일한 데이 터의 동시 사용 또는 변경을 위해 데이터의 일관 성 보장.

허용된 권한을 통해서만 데이터로 접근 가능.

복수의 연결 및 자원 관리

(139)

SQL

데이터베이스와 의사소통을 하기 위한 표준 언어.

데이터 검색, 관리, 데이터베이스 생성 및 수정과 관리

SQL 명령어

데이터 정의어(Data

Definition Language)

데이터베이스의 구조 정의 또는 변경.

데이터 조작어(Data

Manupulation Language)

데이터의 삽입, 삭제, 검색, 수정.

데이터 제어어(Data

Control Language)

데이터베이스에 대한 권한 제어.

참조

관련 문서

캐나다에서는 우유가 비닐봉지에 들어 있는 것을 볼 수 있는데 이에 대해 의문을 던지는 내용의 주어진 글 다음에, 캐나다에서는 1960년대 후반부 터 이렇게 해

내용기반 추천 시스템은 특정한 웹 페이지에 대한 사용자의 평가를 기초로 하여 사용자의 관심을 학습하고 새로운 웹 페이지들을 수집하여 제공하는

이러한 지진해일의 피해를 줄이기 위해서는 지진해일 경보 시스템의 구축 뿐 아니라 지진해일에 대한 지식과 교육이 필요할 것입니다.. 이 책은 지진해일에 관한

따라서 사용자의 위치를 계산하기 위해서는 사용자의 3차원 위치 좌표 뿐만 아니라 위성 간의 시간 변 수를 포함하여 4개의 연립방정식을 풀어서 좌표로 결정하기

따라서 우리는 비판적 글읽기와 비판적 글쓰기는 비판적 사고행위의 두 측면으로 간주할 수 있다.. 글을 제대로 읽기 위해서는 글쓴이의 생각을 잘 살펴야 하며,

- STEAM 수업 전반에 대한 만족도는 3.70으로 나타났는데, 이는 산출물을 만 드는 과정을 통해 학생들은 교사 주도의 수업이 아니라 학생 중심의 수업 이 이루어져

·창의적인 메이커스 활동을 기대하였지만, 몇 가지 한정된 기능을 활용한 산출물들이 대부 분이었음, 더욱 창의적이고 다양한 산출물을 만들기 위해서는 마이크로비트의 센서나

쾌적한 근무환경 조 성을 위한 청사 환경 개선 실적. 성과중심의 합리적 인사시스템 구축 및