User Tools

Site Tools


c:swap:2015:week13
movie.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Page Title</title>
</head>
<body>
 
<?php
$servername = "127.0.0.1";
$username = "hkim";
$password = "hkimaleldj";
 
// Create connection
$conn = new mysqli($servername, $username, $password, $username);
 
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully <br /><br />";
 
mysqli_set_charset( $conn, 'utf8' );
 
//
// queries for creating a table
//
$tables = array("Film", "Actor", "Director", "ActorFilm", "DirFilm");
$sqls = array();
 
$talbes[0] = "Film";
$sqls[0] = "CREATE TABLE Film (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
subtitle VARCHAR(255) NOT NULL,
year int(4) NOT NULL,
url VARCHAR(255),
userRating FLOAT,
imageUrl VARCHAR(255),
linkUrl  TEXT
) CHARACTER SET utf8";
 
$talbes[1] = "Actor";
$sqls[1] = "CREATE TABLE Actor (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
actor VARCHAR(255) NOT NULL
) CHARACTER SET utf8";
 
 
 
$talbes[2] = "Director";
$sqls[2] = "CREATE TABLE Director (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
dir VARCHAR(255) NOT NULL
) CHARACTER SET utf8";
 
$talbes[3] = "ActorFilm";
$sqls[3] = "CREATE TABLE ActorFilm (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
filmID INT,
actorID INT
) CHARACTER SET utf8";
 
$talbes[4] = "DirFilm";
$sqls[4] = "CREATE TABLE DirFilm (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
filmID INT,
dirID INT
) CHARACTER SET utf8";
 
// check if the table exists already by using a function "table_exist"
 
for ($j=0;$j<sizeof($tables);$j++) {
  if (table_exist($tables[$j]) > 0) {
    echo "Table " . $tables[$j] . " already exists.<br />";
    } else if ($conn->query($sqls[$j]) === TRUE) {
      echo "Table created with no prob <br />";
    } else {
      echo "Error creating table: " . $conn->error . "<br />";  }
}
echo "<br />";
 
//
// end of creating tables
//
 
// read movie titles for parsing movie info from naver api
$lines = file('movie.dat');
 
/* api 처리 */
$key = "677eabb7e94745f7f3a043908c540dc5";
 
for ($i=0;$i<sizeof($lines);$i++) {
	$query=trim($lines[$i]);
	if ($query == '') { //skip for empty line
	} else {
		$url = "http://openapi.naver.com/search?key=".$key."&query=\"".$query."\"&target=movie";
		// echo $url ."\n\n<br />\n\n";  // 실제 사용되는 html request를 프린트 해봄
		$xml = simplexml_load_file($url); // 결과값을 xml parsing 함
 
	  foreach ($xml->channel->item as $movie) {
		  // echo "$query :: trim(strip_tags($movie->title)) <br><br>";
	  	if ($query == trim(strip_tags($movie->title))) {
	  		$title = trim(strip_tags($movie->title));
	  		$title = mysqli_real_escape_string($conn, $title);
	  		$subtitle = trim(strip_tags($movie->subtitle));
	  		$subtitle = mysqli_real_escape_string($conn, $subtitle);
	  		// echo "title (sub): " . $title . " (" . $subtitle . ")<br />";
	  		$year = $movie->pubDate;
	  		$dirString = trim($movie->director);
	  		$actorString = trim($movie->actor);
	  		$dirA = explode("|", $dirString);
	  		$actorA = explode ("|", $actorString);
	  		$userRating = $movie->userRating;
	  		$imageUrl = $movie->image;
	  		$linkUrl = $movie->link;
 
				// 영화 정보 처리
				// title check
				$sql = "SELECT * FROM Film WHERE title='$title' and year='$year' ";
				$res = $conn->query($sql);
				if ($res->num_rows == 0) { // title is new
					echo "this $title is new. <br>";
					$sql = "INSERT INTO Film(title, subtitle, year, userRating, imageUrl, linkUrl) VALUES ('$title', '$subtitle', '$year', '$userRating', '$imageUrl', '$linkUrl')";
					if (mysqli_query($conn, $sql)) {
						$fID = mysqli_insert_id($conn);
						echo "Inserted film ID is: " . $fID . "<br />";
					} else {
						echo "Error: ". $sql . "<br>" . mysqli_error($conn);
					}
 
					// title is new 인경우의 if문 아직 닫지 않음
					// director 정보
					// almost one; but just in case
					for ($j=0;$j<(sizeof($dirA)-1);$j++) {
						// check first director exist
						// if new
						// INSERT into director table
						// get ID
						// INSERT ID and fID into dirFilm
						$sql = "SELECT * FROM Director WHERE dir='$dirA[$j]'";
						$res = $conn->query($sql);
						if ($res->num_rows == 0) { // director name is new
							// INSERT director name into Director table
							$sql = "INSERT INTO Director(dir) VALUES ('$dirA[$j]')";
							if (mysqli_query($conn, $sql)) {
								$dID=mysqli_insert_id($conn);
								echo "Director: " . $dirA[$j] . " Inserted director ID is: " . $dID . " and associated film ID: $fID <br />";
								// this
								$sql5 = "INSERT INTO dirfilm(filmID, dirID) VALUES ('$fID','$dID')";
								insert_sql($conn,$sql5);
							} else {
								echo "Error: ". $sql . "<br>" . mysqli_error($conn);
							}
						} else {
							// get the existing director ID
							$sql3 = "SELECT id FROM Director WHERE dir='$dirA[$j]' LIMIT 1";
							$res3 = $conn->query($sql3);
							$row = $res3->fetch_assoc();
							$dirID = $row["id"];
							echo "director, $dirA[$j] ID: " . $row["id"] ."<br>";
							echo "at the same time: we are holding " .$fID ."<br>";
							$sql = "INSERT INTO dirfilm(filmID, dirID) VALUES ('$fID','$dirID')";
							insert_sql($conn,$sql);
						}
					}
 
					for ($k=0;$k<(sizeof($actorA)-1);$k++) {
						// check the actor exist in the actor table with name
						// if new INSERT
						// get ID
						// INSERT actorID with fID
						$sql = "SELECT * FROM Actor WHERE actor='$actorA[$k]'";
						$res = $conn->query($sql);
						if ($res->num_rows == 0) { // actor name is new
							// INSERT actor name into actor table
							$sql2 = "INSERT INTO Actor(actor) VALUES ('$actorA[$k]')";
							$id = insert_sql($conn,$sql2);
							$sql4 = "INSERT INTO actorfilm(filmID, actorID) VALUES ('$fID','$id')";
							insert_sql($conn,$sql4);
						} else { // get the existing actor ID
							$sql3 = "SELECT id FROM Actor WHERE actor='$actorA[$k]' LIMIT 1";
							$res3 = $conn->query($sql3);
							$row = $res3->fetch_assoc();
							$actorID = $row["id"];
							echo "actor, $actorA[$k] ID: " . $row["id"] ."<br>";
							echo "at the same time: we are holding " . $fID . "<br>";
							$sql = "INSERT INTO actorfilm(filmID, actorID) VALUES ('$fID','$actorID')";
							insert_sql($conn,$sql);
						}
					} // actorA for 문
				} // if문 is it new? --> title is new
				else {
					echo "title (sub): " . $title . " (" . $subtitle . ") is not new. <br />";
				} // 이미 있음
			} // if query = search title 인 경우. 쓸데 없는 영화정보가 자꾸 들어가는 걸 막음.
		} // foreach
	} // checking empty line (else 문)
} // data 영화제목 line
 
$conn->close();
 
function insert_sql($conn,$sql) {
	if (mysqli_query($conn, $sql)) {
	  $id = mysqli_insert_id($conn);
		// echo "Inserted ID is: " . $id . "<br>";
		return $id;
	} else {
		// $error = "Error: ". $sql . "<br>" . mysqli_error($conn);
		return mysqli_error($conn);
	}
}
 
function table_exist($table){
    global $conn;
    $sql = "show tables like '".$table."'";
    $res = $conn->query($sql);
    return ($res->num_rows > 0);
}
 
?>
 
</body></html>
movie.data.txt
투캅스
고래 사냥
용서는 없다 
미래를 걷는 소녀 
쇼생크 탈출
레옹
나 홀로 집에
광해, 왕이 된 남자
 
네이키드 보이즈 싱잉
 
맨 온 와이어
 
어웨이 위고
 
춤추는 꿈틀이 밴드
 
헤이트 발렌타인데이
남극의 쉐프
포스 카인드
하얀 아오자이
행복한 울릉인
P.S 온리 유 
이웃집 좀비
채식주의자의 고기 굽는 법
007 퀀텀 오브 솔러스
4개월, 3주... 그리고 2일
27번의 결혼 리허설
두 개의 눈을 가진 아일랜드
용서는 없다 
미래를 걷는 소녀 
제8회 미장센단편영화제(2009) 
하퍼스 바자 패션 필름 페스티벌 
장국영 영화제 
카운테스 
트라이앵글 
칸 국제 광고제 페스티발 수상작 
2009 디자인영화제 
SICAF2009 서울국제만화애니메이션페스티벌 
엘라의 계곡 
파이어프루프-사랑의 도전 
미안하다 독도야 
러시아 모스필름 회고전 
살아있는 야생탐험 
2009 시네바캉스 서울 
스페인 영화제 
나다의 마지막 프로포즈_외국영화 
일렉트릭 미스트 
사일런트 웨딩 
전우치+아바타+셜록 홈즈 
제6회 메가박스 일본영화제 
공드리 월드 
서울독립영화제2009_한국 
사무엘 풀러 회고전 
까칠한 그녀의 달콤한 연애비법 
데이비드 린 회고전 
제6회 서울환경영화제 
우리 시대의 프랑스 영화 특별전 
제1회 서울국제건축영화제 
러브 매니지먼트 
시네마 디지털 서울 2009 
아스트로 보이-아톰의 귀환 
웨딩드레스 
2009 중국영화제 
뽀롱뽀롱 뽀로로 특별전1 
카모메 식당 
20세기 소년-제2장: 마지막 희망 
현대 프랑스 코미디의 거장: 자크 타티 회고전 
제7회 서울기독교영화제 
뽀롱뽀롱 뽀로로 특별전2 
마다가스카 
오페라-아이다 
와이드스크린 영화 특별전 
80년대 일본 뉴웨이브 특별전 
적벽대전:거대한 전쟁의 시작 
불꽃처럼 나비처럼+내 사랑 내 곁에+페임 
업(자막)+국가대표+해운대 
적벽대전1+적벽대전2 
제 1회 낙원음악영화축제
악의 연대기
스틸 앨리스
차이나 타운
스물
페어 러브
포화 속으로
맨발의 꿈
쇼생크 탈출
레옹
나 홀로 집에
뽕
부러진화살
제7광구
화장
신의 한 수
배우는 배우다
톱스타
짜라시
아라한 장풍대작전
쓰리 데이즈
천재선언
말미잘
베테랑
신촌좀비만화
인생은 새옹지마
경주
영화판
달빛 길어올리기
하류인생
천년학
서편제
장군의 아들
개벽
춘향뎐
인터스텔라
트랜센던스
다크나이트 라이즈
맨오브스틸
다크 나이트
메멘토
미행
인썸니아
달라스 바이어스 클럽
울프 오브 월 스트리트
머드
링컨 차를 타는 변호사
아웃 오브 더 퍼니스
어메리칸 허슬
탐정 스마일리
작은 아씨들
비밀요원
아메리칸 싸이코
샤프트
c/swap/2015/week13.txt · Last modified: 2016/07/01 15:00 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki