0

うまくいけば、これは誰かが手伝うのに非常に簡単になるでしょうが、私のPHPは非常に限られているので、ここに行きます:

ページが更新されるたびに異なるビデオを取り込むようにランダムな配列を設定し、「次へ」リンクを設定しました。これを押すと、配列が更​​新され、「次の」ビデオが出力されます。問題は、ランダム関数を介して渡され、見つかったものを出力するだけであるため、配列内の「次の」ビデオではありません。ほとんどの場合、配列には 4 つのビデオしかないため、同じビデオです。

ページにアクセスするたびにランダムなビデオである必要がありますが、[次へ] が押された場合は、ループ内の配列で続行する必要があります。

これまでの私のコードは次のとおりです。

<div class="video-container">
            <?php
                $randomNumber = rand(0,4);
                $videoArray = array(
                    '<iframe src="http://player.vimeo.com/video/46808655?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
                    '<iframe src="http://player.vimeo.com/video/46803192?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
                    '<iframe src="http://player.vimeo.com/video/46811051?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
                    '<iframe src="http://player.vimeo.com/video/46817110?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
                    '<iframe src="http://player.vimeo.com/video/46822673?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
                );
                echo $videoArray[$randomNumber];
                $current_index = array_search($randomNumber, $videoArray);
                $next = $current_index - +1;        
        ?>
    </div>
    <?php if ($videoArray > 0): ?>
        <a href="<?= $videoArray[$next] ?>">Next</a>
    <?php endif; ?>

どんな助けでも大歓迎です:)

4

4 に答える 4

1

$_GETパラメータを設定する必要があります

<a href="play_video.php?v=<?=$next ?>">Next</a>

およびrandomNumber

<?php

     $videoArray = array(/*  */);

     if(isset($_GET['v']) && (int)$_GET['v'] < count($videoArray)){
         $randomNumber = (int)$_GET['v'];
     } else {
         $randomNumber = rand(0,4);
     }
     $current_index = $videoArray[$randomNumber];
     $next = $current_index+1;
     if($next >= count($videoArray)){ $next = 0; }
 ........
于 2012-08-17T14:46:27.987 に答える
1

まず、配列にはURLのみを保存する必要があります。

次に、次のリンクのurlパラメータとして次の動画のIDを渡す必要があります。

<div class="video-container">
    <?php
            // Array with video urls
    $videoArray = array(
        'http://player.vimeo.com/video/46808655?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff',
        'http://player.vimeo.com/video/46803192?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff',
        'http://player.vimeo.com/video/46811051?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff',
        'http://player.vimeo.com/video/46817110?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff',
        'http://player.vimeo.com/video/46822673?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff'
        );

            // Verify if "videoid" has been passed and it is valid
    if (isset($_GET["videoid"])
        && is_numeric($_GET["videoid"])
        && ($_GET["videoid"] >= 0)
        && ($_GET["videoid"] < count($videoArray))
    {
        // videoid is valid, use it
        $videoid = $_GET["videoid"];
    }
    else
    {
        // videoid is invalid or not set, generate random videoid
        $videoid = rand(0, count($videoArray) - 1);
    }
    ?>
    <iframe src="<?php print($videoArray[$videoid]); ?>" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen>
    </iframe>
    <?php
    // calculate id for next video with overflow
    $nextid = $videoid + 1;
    if ($nextid >= count($videoArray))
        $nextid = 0;
    ?>
</div>
<a href="?videoid=<?php print($nextid); ?>">Next</a>
于 2012-08-17T14:53:32.807 に答える
1

このようなものはどうですか:

<div class="video-container">
        <?php

            if (isset($_REQUEST["video"])) {
                $randomNumber = $_REQUEST["video"];
            } else {
                $randomNumber = rand(0,4);
            }

            $videoArray = array(
                '<iframe src="http://player.vimeo.com/video/46808655?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
                '<iframe src="http://player.vimeo.com/video/46803192?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
                '<iframe src="http://player.vimeo.com/video/46811051?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
                '<iframe src="http://player.vimeo.com/video/46817110?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
                '<iframe src="http://player.vimeo.com/video/46822673?title=0&amp;portrait=0&amp;byline=0&amp;color=ffffff" width="650" height="366" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
            );
            echo $videoArray[$randomNumber];
            $current_index = array_search($randomNumber, $videoArray);
            $next = $current_index - +1;        
    ?>
</div>
<?php if ($videoArray > 0): ?>
    <a href="<?php echo $_SERVER["PHP_SELF"] ?>?video=<?= $videoArray[$next] ?>">Next</a>
<?php endif; ?>

スクリプトが video というパラメータで呼び出された場合、それが「乱数」として選択されます。

選択したビデオが存在することを確認したり、最後のビデオで誰かが [次へ] をクリックした場合にどうするかを考えたりするなど、追加できる他の微調整がいくつかあります。

于 2012-08-17T14:47:38.020 に答える
0

スクリプトの出力の前に、次のように入力します session_start();

if(!isset($_SESSION['curVid'])) { 
  $_SESSION['curVid'] = 0;
  $_SESSION['videos'] = $videoArray;
  shuffle($_SESSION['videos']);
}
if(isset($_GET['next'])) { 
  $current = intval($_GET['next']);
  if($current > count($_SESSION['videos'])) { 
    $current = 0;
  }
  $_SESSION['curVid'] = $current;
}
$current = $_SESSION['curVid'];
$video = $_SESSION['videos'][$current];
$next = $_SESSION['curVid']+1;

echo "<a href=\"./?next={$next}\">Next video</a>";
于 2012-08-17T14:59:10.480 に答える