최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

   학생 명단 저장


텍스트에 '(저장) 출력' 이라고 표현하는 데에는 이유가 있다.


출력기능을 만들어 봤자 저장되어있는 데이터가 없으면 아무것도 볼 수 없기때문에 저장을 먼저하는 기능을 만들고 출력기능을 만든다.


여기서 저장의 의미는 페이지를 실행시키면 계속 저장되는 의미가 아닌 테이블을 조회하여 데이터베이스에 아무런 값도 없을경우


php에 작성된 저장 기능을 실행하는것을 의미한다.



   학생 명단 출력


만약 테이블을 조회하여 데이터베이스에 값이 하나라도 있으면 기본 저장 기능을 스킵하여 바로 출력하는 기능으로 넘어간다.




   소스 작성 전 주요 메서드


일단 php에서 한글로 작성된 문서를 출력하기 위해 헤더 정보에 캐릭터셋을 utf-8로 지정하는 문구를 다음과 같이 항상 작성할 것이다.


header("Content-type: text/html;charset=utf-8");



두번째로 DB의 접속 부터 결과 까지는 반드시 다음의 4단계를 거친다.


표현해주는 메서드나 방식만 아주 약간 다를뿐 다음의 4단계로 표현되므로 반드시 이해하고 넘어간다.


1. mySQL접속단계         $connect = mysql_connect("localhost", "admin", "1234");

2. DB선택단계               mysql_select_db("student_db", $connect);

3. SQL문 전송               $result = mysql_query("select * from LIST_TABLE", $connect);

4. SQL결과 단계            $row = mysql_fetch_assoc($result);


"mySQL에 접속 > DB선택 > SQL문 전송 > SQL처리 결과" 이렇게 4단계로 이루어져있다.



마지막으로 SQL쿼리를 작성하여 넘기기 전에 아래와같이 쿼리문을 utf8로 설정하여 전송 하는 기능도 항상 넣어 줄 것이다.


'@' 표시는 에러가 나도 화면에 출력하지 않는 구문이다. 아래의 경우 뭔가 중복이 되거나 적용할 수 없는 상황이 오더라도 그 에러를


굳이 브라우저에 표현하지 않고 넘어간다.


@mysql_query("set names utf8");



   소스 작성


<?php
	header("Content-type: text/html;charset=utf-8");

	$connect = mysql_connect("localhost", "admin", "1234");
	if(!$connect)
		die("DB 접속 실패 :" . mysql_error());
	mysql_select_db("student_db", $connect);

	$sql = "SELECT * FROM list_table";
	@mysql_query("set names utf8");
	$result = mysql_query($sql, $connect);
	$row = mysql_fetch_row($result);
	
	echo $row;	
		if(!$row){
			echo "student_db의 list_table에 데이터가 없으므로 기본 데이터를 입력합니다.<br>";
			
			$hakbeon = array('201401', '201402', '201403', '201404');
			$name = array("정진","배정남","정우성","이정재");
			$hakgwa = array("디지털콘텐츠","패션모델","의상디자인","연극영화");
			$tel = array("1111","2222","3333","4444");

			for($i = 0; $i < count($hakbeon); ++$i){

				$sql = "insert into list_table (hakbeon, name, hakgwa, tel)";
				$sql .= "values ('$hakbeon[$i]', '$name[$i]', '$hakgwa[$i]', '$tel[$i]')";
				
				@mysql_query("set names utf8");
				$result = mysql_query($sql, $connect);
				if(!$result)
					die("${i}번째 레코드에서 데이터 추가 실패!<br />");
			};

			echo "데이터가 모두 생성 되었습니다.<br />";
			mysql_close($connect);
		}
?>

<html>
<head>
<meta charset="utf-8" />
<title>학생리스트</title>
</head>

<body>
	<center>
		<h1>학생 리스트</h1>
		<table border="2" bgcolor="white">
			<tr>
				<td>학번</td><td>이름</td><td>학과</td><td>전화번호</td>
			</tr>

			<?php
				$conn = mysql_connect("localhost", "admin", "1234") or die("DB 접속 실패");
				
				mysql_select_db("student_db", $conn) or die("TABLE 연결 실패");

				//$sql = "SELECT * FROM list_table ORDER BY num DESC";
				$sql = "SELECT * FROM list_table"; //ASCend
				@mysql_query("set names utf8");
				$result = mysql_query($sql, $conn);
				
				while($row = mysql_fetch_assoc($result)){
					echo"<tr>";
					echo "<td>$row[hakbeon]</td>";
					echo "<td>$row[name]</td>";
					echo "<td>$row[hakgwa]</td>";
					echo "<td>$row[tel]</td>";
					echo"</tr>";
				};
				
				/*
				$num_fields = mysql_num_fields($result);
				while($row = mysql_fetch_row($result)){
					for($i=0; $i<$num_fields; ++$i){
						echo $row[$i];
					};
				};
				*/

				mysql_free_result($result);
				mysql_close($conn);
			?>

		</table>
	</center>
</body>
</html>


   출력


처음실행 시 : 데이터가 없으므로 최초 저장



두번째실행 시 : 데이터가 있으므로 그냥 출력























'■ 백엔드 ■ > PHP' 카테고리의 다른 글

8. 학생 데이터 추가  (0) 2014.02.14
7. 학생 명단 검색  (0) 2014.02.14
5. 학생기록부 프로그램 - 테이블로 몸풀기  (0) 2014.02.13
4. 데이터 베이스 만들기  (0) 2014.02.12
3. SQL 캐릭터셋 설정  (0) 2014.02.12
댓글