2012-04-12 5 views
-1

내 코드가 지저분하다는 것을 알고, 나는 이것에 대해 아주 새롭고 내가 배우는대로 배우고있다.PHP XML이 실패 함

내 사이트 : http://itsalllegit.com (현재 내 집 컴퓨터에서 실행 중이고 tvdb API를 사용하므로 조금 느립니다.)

대부분이 작동하는 것처럼 보입니다. 현재는 NCIS가 아니며 현재는 http://itsalllegit.com/season.php?sid=72108&season=1입니다.

나는 그것의 나쁘고 길지만 여기에 내 코드가있다. 나는이 일에 열중하고있어 크게 도움이 될 것입니다. (그래서 일반적으로 더 좋게 만드는 데 도움이 될 것입니다.)

btw ... echo $url3이면 "(*#YR&(^#R(@$#%$&^@#%$*@#%$&^@$#&" 등이 붙습니다.

<html> 
    <head> 
     <title>Saars - Homepage</title> 
      <link rel="stylesheet" type="text/css" href="default.css" /> 
    </head> 
     <body> 
      <?php 

       $series_id = $_GET["sid"]; 
       $season_number = $_GET["season"]; 
       $local_path = "images/Banner/".$series_id."-Banner.jpg"; 
       $url1 = file_get_contents("http://thetvdb.com/api/E676DF9578EF38D7/series/".urlencode($series_id)); 
       $xml = simplexml_load_string($url1); 
       $series_name = $xml->Series[0]->SeriesName; 
       $series_rating = $xml->Series[0]->Rating; 
       $series_network = $xml->Series[0]->Network; 
       $series_status = $xml->Series[0]->Status; 
        echo '<img src="'.$local_path.'"><br />'; 
        echo "Name: ".$series_name."<br />"; 
        echo "Rating: ".$series_rating."<br />"; 
        echo "Network: ".$series_network."<br />"; 
        echo "Status: ".$series_status."<br />"; 
        echo "<hr />"; 
         echo '<table bgcolor="#000000">'; 
          echo '<tr>'; 
           echo '<td width="30">'; 
            echo '<font color="white">#</font>'; 
           echo '</td>'; 
           echo '<td width="500">'; 
            echo '<font color="white">Episode Name</font>'; 
           echo "</td>\n"; 
           echo '<td width="100">'; 
            echo '<font color="white">First Aired</font>'; 
           echo "</td>\n"; 
          echo "</tr>\n"; 
         echo "</table>"; 
       for ($episode_number = 1; $episode_number <= 200; $episode_number++) { 
        $url2 = "http://thetvdb.com/api/E676DF9578EF38D7/series/".$series_id."/default/".urlencode($season_number)."/".urlencode($episode_number)."/en.xml"; 
        $handle = @fopen($url2, 'r'); 
        if ($handle === false) { 
         return; 
        } else { 
         $url3 = file_get_contents("http://thetvdb.com/api/E676DF9578EF38D7/series/".$series_id."/default/".urlencode($season_number)."/".urlencode($episode_number)."/en.xml"); 
         $xml = simplexml_load_string($url3); 
         $episode_name = $xml->Episode[0]->EpisodeName; 
         $episode_rating = $xml->Episode[0]->Rating; 
         $episode_firstaired = $xml->Episode[0]->FirstAired; 
         $episode_overview = $xml->Episode[0]->Overview; 
         $column1 = '<a href="episode.php?sid='.$series_id.'&season='.$season_number.'&episode='.$episode_number.'">'.$episode_number.'</a>'; 
         $column2 = '<a href="episode.php?sid='.$series_id.'&season='.$season_number.'&episode='.$episode_number.'">'.$episode_name.'</a>'; 
         $column3 = '<a href="episode.php?sid='.$series_id.'&season='.$season_number.'&episode='.$episode_number.'">'.$episode_firstaired.'</a>'; 
          echo '<table>'; 
           echo "<tr>\n"; 
            echo '<td width="30">'; 
             echo $column1; 
            echo "</td>\n"; 
            echo '<td width="500">'; 
             echo $column2; 
            echo "</td>\n"; 
            echo '<td width="100">'; 
             echo $column3; 
            echo "</td>\n"; 
           echo "</tr>\n"; 
          echo "</table>"; 
        fclose($handle); 
        } 
       } 
       ?> 
     </Body> 
    </html> 

답변

0

각 URL을 두 번 열어 두 번만 데이터를 읽는 중입니다. 서버는 잠시 후 두 번째 연결을 슬래 밍하고 거부하는 것으로이 동작을 거부 할 수 있습니다. 여기에 루프의 내용을 변경해보십시오 : 그것은 여전히 ​​작동하지 않으면

// Define the URL 
$url2 = "http://thetvdb.com/api/E676DF9578EF38D7/series/$series_id/default/".urlencode($season_number)."/".urlencode($episode_number)."/en.xml"; 

// Try and fetch the XML 
// You are returning a value - are you in a function? Should you maybe break; instead? 
if (!$xmlStr = file_get_contents($url2)) return FALSE; 
if (!$xml = simplexml_load_string($xmlStr)) return FALSE; 

// Get data 
$episode_name = $xml->Episode[0]->EpisodeName; 
$episode_rating = $xml->Episode[0]->Rating; 
$episode_firstaired = $xml->Episode[0]->FirstAired; 
$episode_overview = $xml->Episode[0]->Overview; 

// Output HTML 
// A single-row table per record? Maybe you should have one table with multiple rows? 
$epURL = htmlspecialchars("episode.php?sid=$series_id&season=$season_number&episode=$episode_number"); 
echo " 
<table> 
    <tr> 
    <td width='30'><a href='$epURL'>$episode_number</a></td> 
    <td width='500'><a href='$epURL'>$episode_name</a></td> 
    <td width='100'><a href='$epURL'>$episode_firstaired</a></td> 
    </tr> 
</table>"; 

, 당신이 오류를 얻을 때 포함 된 내용을 확인하기 위해 루프에서 $url2을 울리는보십시오.

+0

고마워요,하지만 그다지 도움이 될 것이라고 기대하지 않습니다. 왜냐하면 지금까지는 NCIS가 실패한 것 같습니다. – Saars

+0

URL이로드 될 때 코드가 생성되어야합니다. 페이지를로드 할 때 작동하지 않는 첫 번째 문제는 브라우저에서 ep 3 : http://thetvdb.com/api/E676DF9578EF38D7/series/72108/default/1/3/en.xml이었습니다. – DaveRandom

+0

나는 알고있다. 언젠가는 일이다, 때때로 그것은 doesnt한다. 나는 그것이 로컬에 있지 않다면 if 문을 넣을 수도 있다고 생각한다. – Saars