2013-05-04 2 views
0

У меня есть рабочий код, который вставляет данные правильно. Я пытаюсь добавить в него новый столбец movie_Id. Я пытаюсь получить значение идентификатора фильма из XML и зацикливать его с заголовком фильма, но на данный момент данные, которые были вставлены некорректно. Объект movie_name имеет 3-4 названия фильмов. Я пытаюсь добавить фильм Id с этим.Не удалось вставить данные в новый столбец

$movie_name = $arrTitle[0]; 
    $xml = simplexml_load_file("http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/$movie_name"); 
     foreach($xml->movies->movie as $movies){ 
     $arrMovie_id= $movies->id; 
     } 
     $movie_ids= $arrMovie_id[0]; 
    $arrStr = explode(':',$htmlShowTime); 
    $release = substr($arrStr[3],0,strlen($arrStr[3])-8); 
    $director = substr($arrStr[5],0,strlen($arrStr[5])-11); 

    $sql_movie = "insert into jos_movie(movie_name,language,cast,movie_release,director,rating,rating_count,movie_ids)values('$movie_name','null','$cast','$release','$director',250,230,'$movie_ids')"; 

Вот полный рабочий код

<?php 
// Include the handy XML data extraction functions. 
include 'xml_regex.php'; 
include 'simple_html_dom.php'; 

$con = mysql_connect('localhost','test','test'); 
mysql_select_db('test',$con); 


// Use cURL to get the RSS feed into a PHP string variable. 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,'mytest.xml'); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$xml = curl_exec($ch); 
curl_close($ch); 

$arrData = array(); 
// Create an array of item elements from the XML feed. 
$news_items = element_set('item', $xml); 
$del_movie = "delete from jos_movie"; 
mysql_query($del_movie); 

$del_cinema = "delete from jos_cinema"; 
mysql_query($del_cinema); 

foreach($news_items as $item) { 
    $title = value_in('title', $item); 
    $url = value_in('link', $item); 
    $cast = value_in('description', $item); 
    //curl_setopt($ch, CURLOPT_URL,$url); 
    //curl_setopt($ch, CURLOPT_HEADER, false); 
    //curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    //$html = curl_exec($ch); 
    $arrTitle = explode('-',$title); 
    $html = file_get_html($url); 
    $htmlShowTime = ''; 

    // find all span tags with class=gb1 moviTimes moviTmngBox 
    foreach($html->find('ul[style=line-height:2em;]') as $e) 
     $htmlShowTime = $e->plaintext; 

    $movie_name = $arrTitle[0]; 
    $arrStr = explode(':',$htmlShowTime); 
    $release = substr($arrStr[3],0,strlen($arrStr[3])-8); 
    $director = substr($arrStr[5],0,strlen($arrStr[5])-11); 

    $sql_movie = "insert into jos_movie(movie_name,language,cast,movie_release,director,rating,rating_count)values('$movie_name','null','$cast','$release','$director',250,230)"; 
    //echo $sql.'<br>'; 
    //echo $sql_movie; 

    mysql_query($sql_movie); 

    $sqlCount = 'select max(id) from jos_movie'; 
    $data = mysql_query($sqlCount); 
    echo $data; 
    print_r($data); 
    $result = mysql_fetch_array($data); 
    $id = $result[0]; 
    echo '<br>'.$id.'<br>'; 

    //$id = mysql_insert_id(); 
    //echo $id; 

     // find all span tags with class=gb1 
    foreach($html->find('div.moviTmngBox') as $e){ 
     $tagTitle = $e->find('a',0); 
     $tagTime = $e->find('div.moviTimes',0); 
     $name = $tagTitle->title; 
     $time = $tagTime->innertext; 

    $trimName = ''; 
    $temName = strtolower(str_replace(' ','',$name)); 

    if(strpos($temName,'indraaudi1') !== false) 
     $trimName = 'Indra Audi 1' and $cinemaId = '1' and $long='32.726602' and $lat='74.857026'; 
    elseif(strpos($temName,'indraaudi2') !== false) 
    $trimName = 'Indra Audi 2' and $cinemaId = '2'and $long='32.726602' and $lat='74.857026'; 
    elseif(strpos($temName,'indraaudi3') !== false) 
     $trimName = 'Indra Audi 3'and $cinemaId = '3' and $long='32.726602' and $lat='74.857026'; 
    elseif(strpos($temName,'apsra') !== false) 
     $trimName = 'Apsra' and $cinemaId = '4' and $long='32.700314' and $lat='74.858023'; 
    else{ 
     $trimName = trim(substr($name,18,strlen($name))) and $cinemaId = '5' and $long='32.7300' and $lat='74.8700' ; 
    } 

     //echo $tagTime->innertext.'<br/>'; 
     $sql = "insert into jos_cinema(cinema_name,show_time,movie_id,cinemaId,logitude,latitude)values('$trimName','$time',$id,$cinemaId,$long,$lat)"; 
     //echo $sql.'<br/>'; 
     mysql_query($sql); 
     //$arrTem = array($tagTitle->title,$tagTime->innertext); 

    } 

}//end rss feed loop 

?> 

Вот мое требование.

Я получаю имена фильмов в $ movie_name как массив Я добавил имена в xml, чтобы получить из него moviedbId. Я получаю фильмID успешно. Я хочу вставить этот идентификатор movieDB в соответствующий фильм.

Пожалуйста, скажите мне, где я ошибаюсь.

+0

Во-первых, вы используете строку интерполяции и не готовит. (Следующее лучшее - использовать экранирование). Что, если сервер, на котором это происходит, заканчивается тем, что MITM'd, так как это не HTTPS, и код вашего сайта находится на SO? Кроме того, всякий раз, когда вы отправляете код, завершите его. у нас нет подсказки, где '$ htmlShowTime'. Кроме того, Whitespace является бесплатным. Используй это! – Amelia

+0

@Hiroto Его просто часть кода, и он работает. Я добавил новую часть, чтобы добавить столбец movieID в код. – Yogus

ответ

2

Попробуйте это:

<?php 

$sql = ""; 
foreach ($arrTitle as $movie_name) { 
    $xml = simplexml_load_file("http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/$movie_name"); 
    foreach ($xml->movies->movie as $movies) { 
     $arrMovie_id = $movies->id; 
    } 
    $movie_ids = $arrMovie_id[0]; 
    $arrStr = explode(':', $htmlShowTime); 
    $release = substr($arrStr[3], 0, strlen($arrStr[3]) - 8); 
    $director = substr($arrStr[5], 0, strlen($arrStr[5]) - 11); 
    $sql .= "('$movie_name','null','$cast','$release','$director',250,230,'$movie_ids'),"; 
} 
$sql  = substr($sql, 0, -1); 
$sql_movie = "INSERT INTO `jos_movie`(`movie_name`,`language`,`cast`,`movie_release`,`director`,`rating`,`rating_count`,`movie_ids`) VALUES" . $sql; 

?> 
+0

его просто часть всего кода. если вы видите, что я получаю название фильма. Я добавляю имя фильма в xml, чтобы добавить в него также фильмы MovieDb. – Yogus

+0

Я зациклился на исходном массиве. В конце foreach вы можете теперь выполнить весь запрос в одной строке. –

+0

Спасибо @ David Я повторил $ ​​movieids, который показывает 44425 44425. Ни один из идентификаторов не подходит для любого фильма в массиве movie_name, и он повторяется два раза :( – Yogus

Смежные вопросы