07 장 PHP 와 M ysql 의연동
ü M ysql 관련 PHP API 함수이해 ü PHP API 함수의활용 ü <form> 태그활용법 ü 변수전달방식의이해 ü API 함수를이용한데이터베이스관리
1. M ysql을지원하는 PHP API 함수 2. <form> 과변수값전달 3. DB 테이블생성과데이터읽기 4. 성적관리프로그램제작
1.2 DB 테이블생성과레코드삽입 데이터베이스테이블구조설계 [ 표 7-1] 명함관리데이터베이스테이블 ( 테이블명 : biz_card) 필드명 타입 추가사항 설명 num int primary key 일련번호 name char(10) 이름 company char(30) 회사 tel char(20) 전화번호 hp char(20) 휴대폰번호 address char(100) 주소
1.2 DB 테이블생성과레코드삽입 명령프롬프트에서데이터베이스테이블생성 biz_card 데이터베이스테이블생성 cr eat e t abl e bi z_car d ( num i nt, name char (10), company char ( 30), t el char (20), hp char (20), addr ess char (100), pr i mar y key(num) ); biz_card.sql
1.2 DB 테이블생성과레코드삽입 biz_card.sql 에담긴 SQL 명령일괄실행 1. C: >cd \APM_Set up\ht docs 2. C: APM_Set up\ht docs> mysql -ukdhong -p1234 -> kdhong_db < bi z_car d. sql 생성된데이터베이스테이블존재확인및구조보기 1. C: APM_Set up\ht docs> mysql -ukdhong -p1234 -> kdhong_db 2. mysql > show t abl es; 3. mysql > desc bi z_car d;
예제 7-1 API 함수를이용한레코드삽입 insert.php 01 <met a ht t p-equi v=" Cont ent -Type cont ent =" t ext /ht ml ; char set =euc-kr " /> 02 <? 03 $connect = mysql _connect ( "l ocal host ", "kdhong", "1234" ); 04 mysql _sel ect _db( "kdhong_db", $connect ); 05 06 $sql = "i nser t i nt o bi z_car d (num, name, company, t el, hp, addr ess) "; 07 $sql. = " val ues (1, ' 원선우 ', ' 미래전자 ', ' 031-276-1829', "; 08 $sql. = " ' 010-8723-2837', ' 경기도용인시신갈동 388-23 번지 ' )"; 09 10 $r esul t = mysql _quer y( $sql ) ; 11 12 i f ($r esul t ) 13 echo " 레코드삽입완료! "; 14 el se 15 echo " 레코드삽입실패! 에러확인요망! "; 16 17 mysql _cl ose( $connect ) ; 18?>
mysql_connect() 함수 형식 r esour ce mysql _connect (st r i ng host name [: por t ], st r i ng user name, st r i ng passwor d) - 첫번째인자 : 서버의호스트명 - 두번째인자 : 사용자계정 - 세번째인자 : 사용자계정의비밀번호 기능 PHP 와 MySQL 을연결한다. C: \>mysql -ukdhong -p1234 와같은기능이다. 반환값 - 성공 : 식별자번호 (r esour ce) - 실패 : FALSE 설명 MySQL 에성공적으로연결하면 r esour ce 라는시스템내부의식별자번호를반환한다. 식별자번호는시스템내부에서사용되므로우리가직접사용할일은별로없으며, 연결에성공하면 FALSE 가아닌값이설정된다고이해하면된다.
mysql_select_db() 함수 형식 bool mysql _sel ect _db( st r i ng dat abase_name, r esour ce l i nk_i dent i f i er ) - 첫번째인자 : 사용할데이터베이스명 - 두번째인자 : 식별자번호 ( mysql _connect ( ) 함수의반환값 ) 기능사용할데이터베이스를선택 mysql >use kdhong_db; 와같은명령이다. 반환값 - 성공 : TRUE - 실패 : FALSE 설명 mysql _connect () 함수를통해 MySQL 과연결된후에는 mysql _sel ect _db( ) 함수로사용할데이터베이스를선택한다.
mysql_query() 함수 형식 r esouce mysql _quer y(st r i ng quer y, r esour ce l i nk_i dent i f i er ) - 첫번째인자 : SQL 명령 - 두번째인자 : 식별자번호 ( mysql _connect ( ) 함수의반환값 ) 기능함수의인자에있는 SQL 명령을실행한다. 반환값 - 성공 : TRUE/ SQL 명령실행결과 - 실패 : FALSE 설명함수의두번째인자가생략되면가장최근에연결된데이터베이스에서명령을실행한다. 첫번째인자가 i nser t /del et e/updat e 명령실행에성공하면 TRUE 를반환하고, 실패하면 FALSE 를반환한다. 만약 sel ect 명령실행에성공하면해당레코드의정보를반환하고, 실패하면 FALSE 를반환한다.
mysql_close() 함수 형식 bool mysql _cl ose(r esour ce l i nk_i dent i f i er ) - 첫번째인자 : 식별자번호 기능 MySQL 과연결을종료한다. 반환값 - 성공 : TRUE - 실패 : FALSE 설명 mysql _connect () 함수로데이터베이스에접속한후작업이모두끝나면, 반드시 mysql _cl ose() 함수로 MySQL 연결을종료해야한다. l i nk_i dent i f i er 는 mysql _connect () 함수의반환값인식별자번호를의미한다. 만약함수의인자가생략된다면가장최근에연결된데이터베이스와서버의연결을종료한다.
2.1 회원가입페이지생성 [ 그림 7-6] 회원가입페이지
예제 7-2 회원가입페이지 mem_form.php 01 <ht ml > 02 <head> 03 <met a ht t p-equi v=" Cont ent -Type" cont ent =" t ext /ht ml ; char set =euc-kr " /> 04 </head> 05 <body> 06 <h2> 회원가입 </h2> 07 <f or m name="mem_f or m" met hod=" post " act i on=" mem_pr i nt. php"> 08 <i nput t ype="hi dden" name="t i t l e" val ue=" 회원가입양식 "> 09 <t abl e bor der =" 1" wi dt h="640" cel l spaci ng="1" cel l paddi ng=" 4"> 10 <t r > 11 <t d al i gn="r i ght ">* 아이디 : </t d> 12 <t d><i nput t ype="t ext " si ze="15" maxl engt h="12" name="i d" val ue="guest "></t d> 13 </t r > 14 <t r > 15 <t d al i gn="r i ght " > * 이름 : </t d> 16 <t d><i nput t ype=" t ext " si ze=" 15" maxl engt h=" 12" name=" name" ></t d> 17 </t r >
예제 7-2 회원가입페이지 mem_form.php 18 <t r > 19 <t d al i gn="r i ght "> * 비밀번호 : </t d> 20 <t d><i nput t ype="passwor d" si ze="15" maxl engt h=" 10" name="passwd" val ue="1234"></t d> 21 </t r > 22 <t r > 23 <t d al i gn="r i ght "> * 비밀번호확인 : </t d> 24 <t d><i nput t ype=" passwor d" si ze=" 15" maxl engt h=" 12" name=" passwd_conf i r m" > </t d> 25 </t r > 26 <t r > 27 <t d al i gn="r i ght "> 성별 : </t d> 28 <t d><i nput t ype=" r adi o" name=" gender " val ue=" M" checked> 남 29 <i nput t ype=" r adi o" name=" gender " val ue=" F" > 여 </t d> 30 </t r >
예제 7-2 회원가입페이지 mem_form.php 31 <t r > 32 <t d al i gn="r i ght "> 휴대전화 : </t d> 33 <t d><sel ect name=" phone1" > 34 <opt i on> 선택 </opt i on> 35 <opt i on val ue="010" >010</opt i on> 36 <opt i on val ue="011" >011</opt i on> 37 <opt i on val ue="017" >017</opt i on> 38 </sel ect > - 39 <i nput t ype="t ext " si ze="4" name="phone2" maxl engt h="4" > - 40 <i nput t ype=" t ext " si ze=" 4" name=" phone3" maxl engt h=" 4" ></t d> 41 </t r > 42 <t r > 43 <t d al i gn="r i ght "> 주소 : </t d> 44 <t d><i nput t ype=" t ext " si ze=" 50" name=" addr ess" ></t d> 45 </t r >
예제 7-2 회원가입페이지 mem_form.php 46 <t r > 47 <t d al i gn="r i ght "> 취미 : </t d> 48 <t d> 49 <i nput t ype="checkbox" name="movi e" val ue=" yes" checked> 영화감상 50 <i nput t ype="checkbox" name="book" val ue="yes" > 독서 51 <i nput t ype="checkbox" name="shop" val ue="yes" > 쇼핑 52 <i nput t ype=" checkbox" name=" spor t " val ue=" yes" checked> 운동 53 </t d> 54 </t r > 55 <t r > 56 <t d al i gn="r i ght "> 자기소개 : </t d> 57 <t d><t ext ar ea name="i nt r o" r ows="5" col s="60" ></t ext ar ea></t d> 58 </t r > 59 </t abl e> 60 <br > 61 <t abl e bor der =" 0" wi dt h="640" >
예제 7-2 회원가입페이지 mem_form.php 62 <t r ><t d al i gn=" cent er "> 63 <i nput t ype="submi t " val ue=" 확인 " > 64 <i nput t ype="r eset " val ue=" 다시작성 " ></t d> 65 </t r > 66 </t abl e> 67 </f or m> 68 </body> 69 </ht ml >
예제 7-3 입력된회원정보출력 mem_print.php 01 <met a ht t p-equi v=" Cont ent -Type" cont ent =" t ext /ht ml ; char set =euc-kr " /> 02 <? 03 echo " 아이디 : $i d<br >"; 04 echo " 이름 : $name<br >"; 05 echo " 비밀번호 : $passwd<br >"; 06 echo " 비밀번호확인 : $passwd_conf i r m<br >" ; 07 echo " 성별 : $sex<br >" ; 08 echo " 휴대번호 : $phone1 - $phone2 - $phone3<br >" ; 09 echo " 주소 : $addr ess<br >"; 10 echo " 영화감상 : $movi e<br >" ; 11 echo " 독서 : $book<br >"; 12 echo " 쇼핑 : $shop<br >"; 13 echo " 운동 : $spor t <br >" ; 14 echo " 자기소개 : $i nt r o<br >" ; 15 echo " 제목 (hi dden 타입에서전달 ) : $t i t l e<br >" ; 16?>
2.2 회원정보확인 [ 예제 7-3] 실행결과 [ 그림 7-7] 회원가입페이지에회원정보입력 ( 좌 ) [ 그림 7-8] 예제 7-3 실행결과 ( 우 )
2.2 회원정보확인 변수전달방식 POST 방식 <form> 태그에서사용된컨트롤의선택사항을 action 에명시된 URL 로전달 한컨트롤의 name 속성값을변수명으로, 폼양식에서사용자가입력한내용이나컨트롤의 value 속성값을그변수값으로전달 GET 방식 변수를통하여간단하게원하는값을전달할때사용하며, 이동하려는 URL 뒤에? 를붙이고변수명과값을한쌍으로묶어서정보를전달 전달하려는변수가여러개일경우에는 & 로구분
<input> 태그 : 텍스트입력박스 형식및사용예 <i nput t ype="t ext " si ze="15" maxl engt h=" 12" name="i d" val ue=" guest " > - si ze: 입력박스의가로크기 - maxl engt h: 입력받을수있는최대글자개수 - name: 입력박스의이름 - val ue: 박스안의초깃값 기능텍스트입력박스를만든다. 참고박스안에 guest 가입력된상태로표시된다.
<input> 태그 : 비밀번호입력박스 형식및사용예 <i nput t ype=" passwor d" si ze=" 15" maxl engt h=" 10" name=" passwd" val ue=" 1234" > - si ze : 입력박스의가로크기 - maxl engt h : 입력받을수있는최대글자개수 - name : 입력박스의이름 - val ue : 박스안의초깃값 기능비밀번호입력박스를만든다. 참고박스안에 **** 가입력된상태로표시된다.
<input> 태그 : 라디오버튼 형식및사용예 <i nput t ype= " r adi o" name=" gender " val ue=" M" checked> - name: 라디오버튼의이름 - checked: 초기선택값 ([ 그림 7-6] 의성별항목참고 ) - val ue: 라디오버튼에표시하면설정되는값 기능라디오버튼을만든다. 설명만약 val ue 값이 " M" 이고라디오버튼이체크되어있으면, 라디오버튼의값으로 M 이전달된다.
<select><option> 태그 형식및사용예 <sel ect name= " phone1" > <opt i on val ue="010" >010</opt i on> <opt i on val ue="011" >011</opt i on> </sel ect > - name: 콤보박스의이름 - val ue: 콤보박스에서해당항목이선택되면설정되는값 기능라디오버튼을만든다.
<input> 태그 : 체크박스 형식및사용예 <i nput t ype=" checkbox" name=" movi e" val ue=" yes" checked> - name: 체크박스의이름 - checked: 화면의초기선택값 - val ue: 체크박스가체크되면설정되는값 기능체크박스를만든다. 설명 val ue 값으로 " yes" 가설정되어있으면이체크박스컨트롤의값으로 " yes" 가전달된다.
<textarea> 태그 형식및사용예 <t ext ar ea name="i nt r o" r ows="5" col s="60"> </t ext ar ea> - name: 여러행텍스트입력상의이름 - r ows: 상자에입력할수있는행의개수, 상자의세로크기 - col s: 한행에입력할수있는글자의개수, 상자의가로크기 기능여러행텍스트입력박스를만든다. <input> 태그 : 이미지버튼 형식및사용예 <i nput t ype=" i mage" sr c=" 이미지파일명 " > 기능이미지버튼을만든다. 설명 [ 예제 7-2] 63 행의확인버튼 ( <i nput t ype= submi t val ue=" 확인 " >) 대신에특정이미지를버튼으로사용하고싶으면 sr c 옵션을사용한다.
2.2 회원정보확인 <input> 태그사용 <input type= submit > <form> 문의 action 에설정된파일로이동 각컨트롤의속성인 name의값이변수값으로전달 Hidden 타입 : <input type="hidden">
3.1 DB 테이블생성과레코드삽입 [ 그림 7-10] membership.sql 파일내용 membership.sql 파일을 [htdocs] 폴더에복사
3.1 DB 테이블생성과레코드삽입 membership.sql 을일괄실행 1. C: \>cd \APM_Set up\ht docs 2. C: \APM_Set up\ht docs> mysql ukdhong p1234 -> kdhong_db < member shi p. sql 생성된테이블과레코드확인 1. C: \APM_Set up\ht docs> mysql ukdhong p1234 -> kdhong_db 2. mysql > show t abl es; 3. mysql > sel ect * f r om member shi p;
예제 7-4 mysql_fetch_array() 함수를이용한데이터읽기 mysql_fetch_array.php 01 <met a ht t p-equi v=" Cont ent -Type" cont ent =" t ext /ht ml ; char set =euc-kr " /> 02 <? 03 $connect = mysql _connect ( "l ocal host ", "kdhong", "1234" ); 04 $db_con = mysql _sel ect _db("kdhong_db", $connect ) ; 05 06 $sql = "sel ect * f r om member shi p; " ; 07 $r esul t = mysql _quer y( $sql, $connect ) ; 08 09 $number = 1; 10?> 11 <h2> mysql _f et ch_ar r ay() 를이용한데이터읽기 </h2> 12 <t abl e wi dt h= "800" bor der ="1" cel l paddi ng=" 10" > 13 <t r al i gn="cent er " > 14 <t d bgcol or =" #cccccc" > 일련번호 </t d> 15 <t d bgcol or =" #cccccc" > 아이디 </t d> 16 <t d bgcol or =" #cccccc" > 이름 </t d> 17 <t d bgcol or =" #cccccc" > 우편번호 </t d> 18 <t d bgcol or =" #cccccc" > 주소 </t d> 19 <t d bgcol or =" #cccccc" > 전화번호 </t d> 20 <t d bgcol or =" #cccccc" > 나이 </t d> 21 </t r >
예제 7-4 mysql_fetch_array() 함수를이용한데이터읽기 mysql_fetch_array.php 22 <? 23 whi l e ( $r ow = mysql _f et ch_ar r ay( $r esul t )) 24 { 25 echo " 26 <t r > 27 <t d> $number </t d> 28 <t d> $r ow[i d] </t d> 29 <t d> $r ow[name] </t d> 30 <t d> $r ow[post _num] </t d> 31 <t d> $r ow[addr ess] </t d> 32 <t d> $r ow[t el ] </t d> 33 <t d> $r ow[age] </t d> 34 </t r > 35 "); 36 $number ++; 37 } 38 39 mysql _cl ose( ) ; 40?> 41 </t abl e>
mysql_fetch_array() 함수 형식 ar r ay mysql _f et ch_ar r ay( r esour ce r esul t ) - 인자 : 식별자번호 (mysql _quer y() 의반환값 ) 기능데이터베이스에서레코드의데이터를배열형태로가져온다. 반환값 - 성공 / 실패 : 배열형태의레코드데이터 /FALSE 설명가져온데이터는 $r ow[num], $r ow[i d] 와같이레코드의필드명을배열인덱스에직접입력한형태로사용한다.
예제 7-5 mysql_fetch_row() 함수를이용한데이터읽기 mysql_fetch_row.php 01 <met a ht t p-equi v=" Cont ent -Type" cont ent =" t ext /ht ml ; char set =euc-kr " /> 02 <? 03 $connect = mysql _connect ( "l ocal host ", "kdhong", "1234" ); 04 $db_con = mysql _sel ect _db("kdhong_db", $connect ) ; 05 06 $sql = "sel ect * f r om member shi p wher e addr ess l i ke ' % 서울 %' or der by age; "; 07 $r esul t = mysql _quer y( $sql, $connect ) ; 08 09 $f i el ds=mysql _num_f i el ds( $r esul t ) ; 10 11 $number = 1; 12?>
예제 7-5 mysql_fetch_row() 함수를이용한데이터읽기 mysql_fetch_row.php 13 <h2> mysql _f et ch_r ow( ) 를이용한데이터읽기 </h2> 14 <t abl e wi dt h= "800" bor der ="1" cel l spaci ng=" 0" cel l paddi ng=" 5" > 15 <t r al i gn="cent er " > 16 <t d bgcol or =" #cccccc" > 일련번호 </t d> 17 <t d bgcol or =" #cccccc" > 아이디 </t d> 18 <t d bgcol or =" #cccccc" > 이름 </t d> 19 <t d bgcol or =" #cccccc" > 우편번호 </t d> 20 <t d bgcol or =" #cccccc" > 주소 </t d> 21 <t d bgcol or =" #cccccc" > 전화번호 </t d> 22 <t d bgcol or =" #cccccc" > 나이 </t d> 23 </t r >
예제 7-5 mysql_fetch_row() 함수를이용한데이터읽기 mysql_fetch_row.php 24 <? 25 whi l e ( $r ow = mysql _f et ch_r ow( $r esul t ) ) 26 { 27 echo "<t r >"; 28 echo "<t d> $number </t d>"; 29 30 f or ( $i =0; $i < $f i el ds; $i ++) 31 { 32 echo "<t d> $r ow[$i ] </t d>"; 33 } 34 35 echo "</t r >"; 36 37 $number ++; 38 } 39 40 mysql _cl ose( ) ; 41?> 42 </t abl e>
mysql_fetch_row() 함수 형식 ar r ay mysql _f et ch_r ow( r esour ce r esul t ) - 인자 : 식별자번호 (mysql _quer y() 의반환값 ) 기능데이터베이스에서레코드의데이터를배열형태로가져온다. 반환값 - 성공 / 실패 : 배열형태의레코드데이터 /FALSE 설명 ar r ay mysql _f et ch_ar r ay( ) 함수와동일한기능을수행하지만, 가져온데이터는레코드의필드번호를배열인덱스에입력한 $r ow[1], $r ow[$i ] 와같은형태로사용하는점이다르다. 배열인덱스와필드대응관계예는 [ 표 7-2] 를참고한다.
예제 7-6 mysql_result() 함수를사용한데이터읽기 mysql_result.php 01 <met a ht t p-equi v=" Cont ent -Type" cont ent =" t ext /ht ml ; char set =euc-kr " /> 02 <? 03 $connect = mysql _connect ( "l ocal host ", "kdhong", "1234" ); 04 $db_con = mysql _sel ect _db("kdhong_db", $connect ) ; 05 06 $sql = "sel ect * f r om member shi p wher e addr ess l i ke ' % 서울 %' or der by age; "; 07 $r esul t = mysql _quer y( $sql, $connect ) ; 08 09 $r ecor ds = mysql _num_r ows($r esul t ) ; 10 11 $f i el ds=mysql _num_f i el ds( $r esul t ) ; 12 13 $number = 1; 14?>
예제 7-6 mysql_result() 함수를사용한데이터읽기 mysql_result.php 15 <h2> mysql _r esul t ( ) 를이용한데이터읽기 </h2> 16 <t abl e wi dt h= "800" bor der ="1" cel l spaci ng=" 0" cel l paddi ng=" 5" > 17 <t r al i gn="cent er " > 18 <t d bgcol or =" #cccccc" > 일련번호 </t d> 19 <t d bgcol or =" #cccccc" > 아이디 </t d> 20 <t d bgcol or =" #cccccc" > 이름 </t d> 21 <t d bgcol or =" #cccccc" > 우편번호 </t d> 22 <t d bgcol or =" #cccccc" > 주소 </t d> 23 <t d bgcol or =" #cccccc" > 전화번호 </t d> 24 <t d bgcol or =" #cccccc" > 나이 </t d> 25 </t r >
예제 7-6 mysql_result() 함수를사용한데이터읽기 mysql_result.php 26 <? 27 f or ($i = 0; $i < $r ecor ds; $i ++) 28 { 29 echo "<t r >"; 30 echo "<t d> $number </t d>"; 31 32 f or ($j = 0; $j < $f i el ds; $j ++) 33 { 34 $dat a = mysql _r esul t ( $r esul t, $i, $j ); 35 echo "<t d> $dat a </t d>"; 36 } 37 echo "</t r >"; 38 $number ++; 39 } 40 mysql _cl ose( ); 41?> 42 </t abl e>
mysql_result() 함수 형식 mi xed mysql _r esul t ( r esour ce r esul t, i nt r ow, mi xed f i el d) - 첫번째인자 : 식별자번호 ( mysql _quer y( ) 의반환값 ) - 두번째인자 : 레코드의행위치 - 세번째인자 : 레코드의열위치 기능레코드의특정위치에저장된값을가져온다. 반환값 - 성공 / 실패 : 해당위치에있는값 /FALSE 설명 mysql _f et ch_r ow( ) 와 mysql _f et ch_ar r ay() 함수가하나의레코드정보를가져오는반면, mysql _r esul t ( ) 함수는특정위치에해당하는값을가져온다. 세번째인자에는필드의일련번호 ( 0 부터시작 ) 와필드명을모두사용할수있고, 반환값의형태에따라반환값의타입이달라진다.
mysql_num_fields() 함수 형식 i nt mysql _num_f i el ds( r esour ce r esul t ) - 인자 : 식별자번호 (mysql _quer y() 의반환값 ) 기능인자의필드개수를알려준다. 반환값 - 성공 / 실패 : 필드의개수 /FALSE 설명검색결과가저장된첫번째인자 r esul t 의필드개수를알려준다.
mysql_num_rows() 함수 형식 i nt mysql _num_r ows( r esour ce r esul t ) - 인자 : mysql _quer y() 의반환값 기능데이터베이스에있는레코드의개수를알려준다. 반환값 - 성공 / 실패 : 레코드의개수 /FALSE 설명 sel ect 문의실행결과인함수의인자가가지고있는레코드의개수를알고싶을때사용한다.
4. 성적관리프로그램제작 1. 데이터베이스테이블설계 2. 데이터베이스테이블생성 3. 성적관리프로그램작성 4. 레코드삭제프로그램작성 [ 그림 7-19] 예제 7-8 에서성적입력
4. 성적관리프로그램제작 1. 데이터베이스테이블설계 [ 표 7-3] 성적관리프로그램데이터베이스테이블 ( 테이블명 : stud_score) 필드명타입추가사항설명 num int not null, auto_increment, primary key 일련번호 name varchar(12) 학생의이름 sub1 int 과목 1 의점수 sub2 int 과목 2 의점수 sub3 int 과목 3 의점수 sub4 int 과목 4 의점수 sub5 int 과목 5 의점수 sum int 합계 avg float 평균
4. 성적관리프로그램제작 2. 데이터베이스테이블생성 stud_score 데이터베이스테이블생성 cr eat e t abl e st ud_scor e ( num i nt not nul l aut o_i ncr ement, name var char (12), sub1 i nt, sub2 i nt, sub3 i nt, sub4 i nt, sub5 i nt, sum i nt, avg f l oat, pr i mar y key(num) ); stud_score.sql
예제 7-7 stud_score 데이터베이스테이블생성 stud_score.php 01 <met a ht t p-equi v=" Cont ent -Type" cont ent =" t ext /ht ml ; char set =euc-kr " /> 02 <? 03 $connect = mysql _connect ( "l ocal host ", "kdhong", "1234" ); 04 $dbconn = mysql _sel ect _db("kdhong_db", $connect ) ; 06 $sql = "cr eat e t abl e st ud_scor e ( "; 07 $sql. = "num i nt not nul l aut o_i ncr ement, "; 08 $sql. = "name var char ( 12), "; 09 $sql. = "sub1 i nt, "; 10 $sql. = "sub2 i nt, "; 11 $sql. = "sub3 i nt, "; 12 $sql. = "sub4 i nt, "; 13 $sql. = "sub5 i nt, "; 14 $sql. = "sum i nt, "; 15 $sql. = "avg f l oat, "; 16 $sql. = "pr i mar y key(num) )"; 17 18 $r esul t = mysql _quer y( $sql, $connect ) ; 19
예제 7-7 stud_score 데이터베이스테이블생성 stud_score.php 20 i f ($r esul t ) 21 echo " 데이터베이스테이블 ' st ud_scor e' 가생성되었습니다! " ; 22 el se 23 echo " 데이터베이스테이블생성에러!!! " ; 24 25 mysql _cl ose( ); 26?>
4. 성적관리프로그램제작 3. 성적관리프로그램작성 예제 7-8 성적관리프로그램 score_list.php 001 <? 002 // 데이터베이스연결 003 $connect = mysql _connect ("l ocal host ", " kdhong", " 1234"); 004 005 // 데이터베이스선택 006 mysql _sel ect _db("kdhong_db", $connect ) ; 007 008 i f ($mode == "i nser t " ) // 데이터입력모드 009 { 010 $sum = $sub1 + $sub2 + $sub3 + $sub4 + $sub5; // 합계계산 011 $avg = $sum/5; // 평균계산 012 013 $sql = " i nser t i nt o st ud_scor e ( name, sub1, sub2, sub3, sub4, sub5, sum, avg) val ues"; 014 $sql. = "(' $name', $sub1, $sub2, $sub3, $sub4, $sub4, $sum, $avg)"; 015 016 $r esul t = mysql _quer y( $sql, $connect ) ; 017 } 018?>
예제 7-8 성적관리프로그램 score_list.php 019 020 <met a ht t p-equi v="cont ent -Type" cont ent =" t ext /ht ml ; char set =euc-kr " /> 021 <h3>1) 성적입력하기 </h3> 022 023 <f or m act i on=" scor e_l i st. php?mode=i nser t " met hod=' post ' > 024 <t abl e wi dt h=" 720" bor der ="1" cel l paddi ng=" 5"> 025 <t r ><t d> 이름 : <i nput t ype="t ext " si ze="6" name="name" > 026 과목1 : <i nput t ype=" t ext " si ze=" 3" name=" sub1" > 027 과목2 : <i nput t ype=" t ext " si ze=" 3" name=" sub2" > 028 과목3 : <i nput t ype=" t ext " si ze=" 3" name=" sub3" > 029 과목4 : <i nput t ype=" t ext " si ze=" 3" name=" sub4" > 030 과목5 : <i nput t ype=" t ext " si ze=" 3" name=" sub5" > 031 </t d> 032 <t d al i gn="cent er " > 033 <i nput t ype="submi t " val ue=" 입력하기 "> 034 </t d> 035 </t r > 036 </t abl e> 037 </f or m>
예제 7-8 성적관리프로그램 score_list.php 038 039 <p> 040 <h3>2) 성적출력하기 </h3> 041 <p><a hr ef ="scor e_l i st. php?mode=bi g_f i r st " >[ 성적순정렬 ]</a> 042 <a hr ef ="scor e_l i st. php?mode=smal l _f i r st ">[ 성적역순정렬 ]</a></p> 043 <p> 044 <! -- 제목표시시작 --> 045 <t abl e wi dt h=" 720" bor der ="1" cel l paddi ng=" 5"> 046 <t r al i gn=" cent er " bgcol or =" #eeeeee"> 047 <t d> 번호 </t d> 048 <t d> 이름 </t d> 049 <t d> 과목1</t d> 050 <t d> 과목2</t d> 051 <t d> 과목3</t d> 052 <t d> 과목4</t d> 053 <t d> 과목5</t d> 054 <t d> 합계 </t d> 055 <t d> 평균 </t d> 056 <t d> </t d> 057 </t r >
예제 7-8 성적관리프로그램 score_list.php 058 <! -- 제목표시끝 --> 059 060 <? 061 // sel ect 명령저장 062 i f ($mode == "bi g_f i r st " ) // 성적순정렬 ( 내림차순 ) 063 $sql = "sel ect * f r om st ud_scor e or der by sum desc"; 064 el se i f ($mode == "smal l _f i r st ") // 성적순정렬 ( 오름차순 ) 065 $sql = "sel ect * f r om st ud_scor e or der by sum"; 066 el se 067 $sql = "sel ect * f r om st ud_scor e" ; 068 069 $r esul t = mysql _quer y($sql ) ; 070 071 $count = 1; // 성적출력하기의번호 072
예제 7-8 성적관리프로그램 score_list.php 073 // 데이터베이스데이터출력시작 074 whi l e ($r ow = mysql _f et ch_ar r ay( $r esul t )) 075 { 076 $avg = r ound($r ow[avg], 1); 077 078 $num = $r ow[num]; 079 080 echo ("<t r al i gn=' cent er ' > 081 <t d> $count </t d> 082 <t d> $r ow[name] </t d> 083 <t d> $r ow[sub1] </t d> 084 <t d> $r ow[sub2] </t d> 085 <t d> $r ow[sub3] </t d> 086 <t d> $r ow[sub4] </t d> 087 <t d> $r ow[sub5] </t d> 088 <t d> $r ow[sum] </t d> 089 <t d> $avg </t d> 090 <t d> <a hr ef =' scor e_del et e. php?num=$num' >[ 삭제 ]</a></t d> 091 </t r > 092 ");
예제 7-8 성적관리프로그램 score_list.php 093 094 $count ++; 095 } 096 // 데이터베이스데이터출력완료 097 098 mysql _cl ose( ); // 데이터베이스와의접속종료 099?> 100 101 </t abl e>
round() 함수 형식 f l oat r ound (f l oat $val, i nt $pr eci si on) - 첫번째인자 : 실수형변수, 상수 - 두번째인자 : 구하는자릿수 기능인자를지정한자릿수까지반올림한다. 반환값 - 성공 / 실패 : 반올림된값 /FALSE 설명예를들어 r ound( 5. 367, 1) 이면, 실수 5. 367 를소수점첫째자리까지반올림한 5. 4 가반환된다. 함수가성공적으로실행되면반올림된값을반환한다.
4. 성적관리프로그램제작 4. 레코드삭제프로그램작성 예제 7-9 레코드삭제 score_delete.php 01 <? 02 $connect = mysql _connect ( "l ocal host ", "kdhong", "1234" ); 03 mysql _sel ect _db( "kdhong_db", $connect ); 04 05 // 필드 num 이 $num 값을가지는레코드삭제 06 $sql = "del et e f r om st ud_scor e wher e num = $num"; 07 mysql _quer y( $sql, $connect ) ; 08 09 mysql _cl ose( $connect ) ; 10 11 // scor e_l i st. php 로돌아감 12 Header ( "Locat i on: scor e_l i st. php"); 13?>