2012-02-03 10 views
0

特定のdivの自動リフレッシュを1分ごとにする方法はありますか?毎分ページをリロードするには時間がかかりすぎるからです。 div自体は変更できる重要な部分です。私は既に私が持っているPHPコードを使用して私のdivを自動更新することができます

<div id="livetable"> 
<?php loadpage(); ?> 
</div> 

<?php 
define('ELEMENT_CONTENT_ONLY', true); 
define('ELEMENT_PRESERVE_TAGS', false); 

function value_in($element_name, $xml, $content_only = true) 
{ 
    if ($xml == false) 
    { 
     return false; 
    } 
    $found = preg_match('#<'.$element_name.'(?:\s+[^>]+)?>(.*?)'.'</'.$element_name.'>#s', $xml, $matches); 
    if ($found != false) 
    { 
     if ($content_only) 
     { 
      return $matches[1]; //ignore the enclosing tags 
     } 
     else 
     { 
      return $matches[0]; //return the full pattern match 
     } 
    } 
    // No match found: return false. 
    return false; 
} 

function loadpage() 
{ 
     echo "<table cellpadding=\"0\" cellspacing=\"0\" style=\"width: 95%\" >"; 
     echo "<tr class=\"info-row\" bgcolor=#252525 style=\"color:white; height: 15px;\">"; 
     echo "<td style=\"width: 14%; height: 10px; padding-left: 5px;\"><b>Preview</b></td>"; 
     echo "<td style=\"width: 10%; height: 10px; padding-left: 5px;\"><b>Live</b></td>"; 
     echo "<td style=\"width: 36%; height: 10px; padding-left: 5px;\"><b>Stream</b></td>"; 
     echo "<td style=\"width: 10%; height: 10px; padding-left: 5px;\"><b>Viewers</b></td>"; 
     echo "<td style=\"width: 10%; height: 10px; padding-left: 5px;\"><b>Time online</b></td>"; 
     echo "</tr>"; 
     addrow(107473,10,"Osuryn","Osuryn is streaming random games live",false); 
     addrow(210320,28,"Dennojj","Dennojj is streaming PS3 games",true); 
     echo "</table>"; 
} 

function addrow($streamID, $streamPage , $streamName , $streamSlogan, $odd) 
{ 
    if ($odd) 
    { 
      echo "<tr class=\"content-row online\" id=\"958\" bgcolor=#A7A7A7>"; 
    } 
    else 
    { 
      echo "<tr class=\"content-row online\" id=\"958\" bgcolor=#BFBFBF>"; 
    } 
    echo "<td style=\"width: 14%;\"><img src=\"http://img.hw.own3d.tv/live/live_tn_".$streamID."_.jpg\" style=\"height: 72px;\" \></td>"; 
    echo "<td style=\"width: 10%; padding-left: 5px;\"><br><br><b>".getLiveStatus($streamID)."</b></td>"; 
    echo "<td style=\"width: 36%; vertical-align: top; padding-top: 6px; padding-right: 6px;\">"; 
    echo "<div><br><a href=\"http://brokendiamond.org/?q=node/$streamPage\">$streamName</a></div>"; 
    echo "<div style=\"padding-top: 6px; font-size: 11px;\">$streamSlogan</div>"; 
    echo "</td>"; 
    echo "<td style=\"width: 10%; padding-left: 5px;\"><br><br>".getLiveViews($streamID)."</td>"; 
    echo "<td style=\"width: 10%; padding-left: 5px;\"><br><br>".getOnTime($streamID)." minutes online</td>"; 
    echo "</tr>"; 
} 

function getLiveStatus($streamID) 
{ 
    $request = 'http://api.own3d.tv/liveCheck.php?live_id='.$streamID; 
    $arg = '240'; 

    $session = curl_init($request.$arg); 

    curl_setopt($session, CURLOPT_HEADER, false); 
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
    $response = curl_exec($session); 
    curl_close($session); 

    if (preg_match("/true/",$response, $result)) 
    { 
     $streamStatus="Live"; 
    } 
    else 
    { 
     $streamStatus="Offline"; 
    } 
    return $streamStatus; 
} 

function getLiveViews($StreamID) 
{ 
    $request = 'http://api.own3d.tv/liveCheck.php?live_id='.$StreamID; 
    $arg = '240'; 

    $session = curl_init($request.$arg); 

    curl_setopt($session, CURLOPT_HEADER, false); 
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
    $response = curl_exec($session); 
    curl_close($session); 

    $viewStatus =value_in('liveViewers', $response) + ""; 

    return $viewStatus; 
} 

function getOnTime($StreamID) 
{ 
    $request = 'http://api.own3d.tv/liveCheck.php?live_id='.$StreamID; 
    $arg = '240'; 

    $session = curl_init($request.$arg); 

    curl_setopt($session, CURLOPT_HEADER, false); 
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
    $response = curl_exec($session); 
    curl_close($session); 

    $onStatus =value_in('LiveDuration', $response) + ""; 

    return $onStatus; 
} 
?> 
+0

http://en.wikipedia。org/wiki/Meta_refresh – Vyktor

+0

@Vyctorはページ全体をリフレッシュします(divがiframeの場合はreq。効果が得られます)。 divだけをリフレッシュするには、js(そしてajaxコール)が必要です –

+0

@DamienPirsyああそうですから、別のリンクになります:) http://api.jquery.com/jQuery.ajax/ – Vyktor

答えて

2

を使用することですdivまたはiframeを使用してください。

これを行う最も簡単な方法、またはJavaScriptに詳しくない場合は、iframeを使用することです。基本的には、iframeを使用してdivのコンテンツを読み込み、iframeに使用されているPHPコードを変更してX秒後にページをリロードする必要があります。これは、PHP header()の機能で簡単にする必要があります。

代わりにAJAXを使用する場合は、setInterval()関数を使用して実際にAJAXリクエストを行い、divのコンテンツを更新する関数呼び出しを繰り返すことをお勧めします。しかし、setTimeout()を代わりに使用し、関数呼び出しを持つことをお勧めします。また、X秒後にはsetTimeout()も使用してください。その理由は、setInterval()を使用することにより、最後の操作がまだ完了していなくてもJavaScriptが実行され続けるからです。しかし、もしあなたが使用するならば、setTimeout() JavaScriptは最後の関数呼び出しが完了するのを待ってから次の関数呼び出しに移ります。

3

PHPではなく、しかし、AJAXを使って外部ファイルからデータを取得し、divの内容をJavaScriptで更新することができます。使用してjQueryの:OR、より簡単に

$.get('/path/to/php/script', function(data) { 
    $('#selector').html(data); 
}); 

$('#selector').load('/path/to/php/script'); 

編集 - 明確化:

ファイル "ajax.php":

<?php 

// Include your functions here 
echo loadpage(); 

HTMLファイル:

<div id="content"></div> 
<script> 
    $(document).ready(function() { 
    $("#livetable").load("ajax.php"); 
    }); 
</script> 
+0

それはそれです全く新しいスクリプトの代わりに私のloadpage関数を使用することは可能ですか?それはちょうどコピー貼りthoになるだろうが、それは私のためにもっと簡単になるだろう – Jonathan

+0

はい。その関数をajax経由で呼び出したページにインクルードし、その関数の応答をページ出力として返します。 –

+0

@ Gary Chambers、#selectorの場所に何を置く必要がありますか? .loadにすることができます( 'loadpage()')。右? – Jonathan

0

サーバーは、通常のhtml配信でクライアントにコンテンツをプッシュすることはできません。 クライアントサイドのajax-requestを使用してdivの新しいコンテンツを取得します。

+0

私の声明に何か間違っていますか? – Christoph

0

meta refreshを使用すると、ページ全体を簡単に更新できます。

あなたはあなただけのdivにリフレッシュしたい、あなたはAJAXが必要になるだろう、おそらく最も簡単な解決策は、あなたが更新しますJavaScriptでAJAXリクエストを行う必要がありますjQueryまたはちょうどload()

0

* PHPで、特定のdivだけで、ページ全体の更新を更新することはできませんが可能ですあなたがsetTimeoutをリフレッシュを使用してAJAXでその可能性を、それをしたい場合はPHPの我々に//

* ,,これを試してみてください( "refresh:5; url:tvinfo.php");

ヘッダー

+0

これは、ページ全体をリフレッシュするだけでなく、 –

+0

@DamienPirsy、jquery $( 'div')。get()); setTimeout(function(){window.location.reload = 2000;}で可能です。 ; –

関連する問題