2016-03-26 7 views
1

基本的に、この列(urlv、textacv、decribacv、languagev、levelv)のデータベースにvidテーブルがあります。 (url - urlvを使用して)データベースにあり、ビデオと一緒に各ビデオの名前(textacv)と説明(decribacv)といくつかのタグ(languagev、levelv)を表示します。ビデオをURLで表示し、単一のループを使ってデータベースからのすべての情報を表示

私が達成したことは、私のすべてのビデオがURLによってデータベースから表示されるページがあることです。ここで私はこの作った方法:あなたが見ることができるように

$conn = mysqli_connect('localhost','root','','people'); 

$query = "SELECT urlv, languagev, 
    levelv, textacv, decribacv FROM vid"; 
$fetch = mysqli_query($conn,$query); 
$videos = array(); 
while ($row = mysqli_fetch_assoc($fetch)) { 
    $videos[] = $row['urlv']; 
    $language[] = $row['languagev']; 
    $levelv[] = $row['levelv']; 
    $textac[] = $row['textacv']; 
    $decribac[] = $row['decribacv']; 
} 
foreach ($videos as $urlv) { 

    echo "<div class='wrap'> 
     <div class='video-wrap'> 
     <div class='blockvidname'> 
     <div class='name'><legend class='name-top'>". 
      $textac."</legend></div> 
     <video class='video'controls> 
     <source src='".$urlv."'> 
     </video> 
     <div class='name-bot'><legend class='name-bottom'> 
      This is the name of the video</legend></div> 
     </div> 
     <div class='side-bar-wrap'> dfdfdf </div> 
     <button class='side-bar- button'>More Info</button> 
     </div> 
     </div>"; 
} 

を - 私は、データベースと、ディスプレイの動画からURLを取得するために、foreachループを使用しました、今私はそれぞれに名前、説明、およびいくつかのタグ「を付ける」する必要があります私のテーブルビデオからビデオacordinaly。ここに私がしたことがあります:

while ($row = mysqli_fetch_assoc($fetch)) { 
    $videos[] = $row['urlv']; 
    $language[] = $row['languagev']; 
    $levelv[] = $row['levelv']; 
    $textac[] = $row['textacv']; 
    $decribac[] = $row['decribacv']; 
} 
while($row) { 

    echo "<div class='wrap'> 
     <div class='video-wrap'> 
     <div class='blockvidname'> 
     <div class='name'><legend class='name-top'>". 
     $textac."</legend></div> 
     <video class='video'controls> 
     <source src='".$urlv."'> 
     </video> 
     <div class='name-bot'><legend class='name-bottom'> 
      This is the name of the video</legend></div> 
     </div> 
     <div class='side-bar-wrap'> dfdfdf </div> 
     <button class='side-bar-button'>More Info</button> 
     </div> 
     </div>"; 
} 

しかし、何も表示されません!私は 'foreachループで複数の引数'をGoogleで検索しましたが、私に役立つものは何も見つかりませんでした。

問題は、単一のループで複数のデータを表示できないことです(私のHTML構造にネストがあり、複数のループがそれを制動するため)。注:私はテーブルに表示されているすべてのビデオとそれぞれの名前、descriptiobなど私はdbに個々のビデオに添付したいと思います。

ありがとうございます!私は本当にこのことに固執しています。前もって感謝します。

答えて

1

あなたは自分の配列に列を入れしようとすることで、物事を複雑にかけ種類のです。それは管理可能ですが、必要ではありません。最初のwhileループですべてをやってみましょう。

while ($row = mysqli_fetch_assoc($fetch)) { ?> 
    <div class='wrap'> 
     <div class='video-wrap'> 
      <div class='blockvidname'> 
       <div class='name'> 
        <legend class='name-top'><?php echo $row['textacv'] ?></legend> 
       </div> 
       <video class='video' controls> 
        <source src="<?php echo $row['urlv']?>"> 
       </video> 
       <div class='name-bot'> 
        <legend class='name-bottom'> 
         This is the name of the video 
        </legend> 
       </div> 
      </div> 
      <div class='side-bar-wrap'> dfdfdf </div> 
      <button class='side-bar-button'>More Info</button> 
     </div> 
    </div> 
<?php } ?> 

次に、エコー時に行のインデックスを使用してください。ここからかなりまっすぐ進むはずです。

+0

ありがとうございます!出来た! –

+0

@DonaldaDonalda私の答えを受け入れてアップグレードすることを検討してください。 – Ohgodwhy

0

関数each()を使用して、配列$videosとともに他の配列を反復処理することができます。

このコードを試してみてください。

$conn = mysqli_connect('localhost','root','','people'); 

$query = "SELECT urlv, languagev, 
    levelv, textacv, decribacv FROM vid"; 
$fetch = mysqli_query($conn,$query); 
$videos = array(); 
while ($row = mysqli_fetch_assoc($fetch)) { 
    $videos[] = $row['urlv']; 
    $language[] = $row['languagev']; 
    $levelv[] = $row['levelv']; 
    $textac[] = $row['textacv']; 
    $decribac[] = $row['decribacv']; 
} 
foreach ($videos as $urlv) { 
    $textacValue = each($textac); 
    $languageValue = each($language); 
    $levelvValue = each($levelv); 
    $decribacValue = each($decribac); 

    echo "<div class='wrap'> 
     <div class='video-wrap'> 
     <div class='blockvidname'> 
     <div class='name'><legend class='name-top'>". 
     $textacValue."</legend></div> 
     <video class='video'controls> 
     <source src='".$urlv."'> 
     </video> 
     <div class='name-bot'><legend class='name-bottom'> 
      This is the name of the video</legend></div> 
     </div> 
     <div class='side-bar-wrap'> dfdfdf </div> 
     <button class='side-bar- button'>More Info</button> 
     </div> 
     </div>"; 
} 
+0

しかし、もしあなたが 'foreach($ videos as $ idx => $ urlv){'を使うのではなく、他の値にアクセスする必要があるときは '$ language [$ idx]' '$ levelv [$ idx]'しかし、最初のループでマークアップを作成しないのはなぜですか? – Ohgodwhy

+0

これも動作します:)しかし、データベースからデータを取得しながら、各行を '$ rows [] = $ row'に保存して、この配列を' foreach($ rows => $ row){ $ levelv = $ row ['levelv'];/* and so on * /} ' –

+0

なぜ、行を別の行配列に保存して反復するのですか?あなたはすでに 'while()'ループで同じことをしています。それはただの狂気です! – Ohgodwhy

関連する問題