2017-01-05 4 views
-1

以下のように動作するコードを作成しようとしていますが、以下のコードが複数回フェッチされているため、データを一度だけフェッチする必要があり、サーバーが遅くなる恐れがあります。下のものと同じことをするより良い方法があります。基本的に以下のコードはデータベースからのリストを独自のdivカテゴリに入れます。はこの方法にとってより良い方法ですか?

<div class="popular-video"> 
<h2>Popular</h2> 
    <ul> 
    <?php 

     global $connection; 
     $sexy = "sexy"; 
     $query = "SELECT `videoname`,`username`,`videourl`,`uploaddate`,`duration`,`views`,`tags` FROM `videolist` WHERE `tags` = ? "; 
     $stmt = $connection->prepare($query); 
     $stmt->bind_param("s",$sexy); 
     $stmt->execute(); 
     $stmt->store_result(); 

     if($stmt->num_rows > 0){ 
      $stmt->bind_result($videoname,$username,$videourl,$uploaddate,$duration,$views,$tags); 
      while ($stmt->fetch()) { 
       if($username == 'ichigo'){ 
       echo " 
         <a href='video.php?watch=$videourl'> 
         <li> 
          <div class='leftside'> 
           <img src='' width='100%' height='100%' style='background-color: blue;' >      
          </div> 

          <div class='rightside'> 
           <h4>$videoname</h4> 
           <p>$username</p> 
           <p>$views views</p> 
           <p>$duration</p>      
          </div> 

         </li> 
         </a> 
       ";      
       } 

      } 
     } 
    ?> 
    </ul> 
</div> 

<div class="subcription-video"> 
<h2>Subcription</h2> 
    <ul> 
    <?php 
     global $connection; 
     $sexy = "sexy"; 
     $query = "SELECT `videoname`,`username`,`videourl`,`uploaddate`,`duration`,`views` FROM `videolist` WHERE `tags` = ? "; 
     $stmt = $connection->prepare($query); 
     $stmt->bind_param("s",$sexy); 
     $stmt->execute(); 
     $stmt->store_result(); 
     if($stmt->num_rows > 0){ 
      $stmt->bind_result($videoname,$username,$videourl,$uploaddate,$duration,$views); 
      while ($stmt->fetch()) { 
       echo " 
         <a href='video.php?watch=$videourl'> 
         <li> 
          <div class='leftside'> 
           <img src='' width='100%' height='100%' style='background-color: blue;' >      
          </div> 

          <div class='rightside'> 
           <h4>$videoname</h4> 
           <p>$username</p> 
           <p>$views views</p> 
           <p>$duration</p>      
          </div> 

         </li> 
         </a> 
       "; 
      } 
     } 
    ?> 
    </ul> 
</div> 

<div class="related-video-by-subcription"> 
<h2>Related-Video</h2> 
    <ul> 
    <?php 
     global $connection; 
     $sexy = "sexy"; 
     $query = "SELECT `videoname`,`username`,`videourl`,`uploaddate`,`duration`,`views` FROM `videolist` WHERE `tags` = ? "; 
     $stmt = $connection->prepare($query); 
     $stmt->bind_param("s",$sexy); 
     $stmt->execute(); 
     $stmt->store_result(); 
     if($stmt->num_rows > 0){ 
      $stmt->bind_result($videoname,$username,$videourl,$uploaddate,$duration,$views); 
      while ($stmt->fetch()) { 
       echo " 
         <a href='video.php?watch=$videourl'> 
         <li> 
          <div class='leftside'> 
           <img src='' width='100%' height='100%' style='background-color: blue;' >      
          </div> 

          <div class='rightside'> 
           <h4>$videoname</h4> 
           <p>$username</p> 
           <p>$views views</p> 
           <p>$duration</p>      
          </div> 

         </li> 
         </a> 
       "; 
      } 
     } 
    ?> 
    </ul> 
</div> 
+0

私はいくつかのクエリがあなたのサーバの速度にそれほど影響を与えないと思います。 –

+0

これに似た9つのクエリがあり、このようにするとサーバーが遅くなります。 – freelixa

答えて

0

関数を作成し、その関数をHTMLで呼び出すことができます。

function foo() { 
    global $connection; 
    $sexy = "sexy"; 
    $query = "SELECT `videoname`,`username`,`videourl`,`uploaddate`,`duration`,`views` FROM `videolist` WHERE `tags` = ? "; 

    $stmt = $connection->prepare($query); 
    $stmt->bind_param("s",$sexy); 
    $stmt->execute(); 
    $stmt->store_result(); 

    if($stmt->num_rows > 0) { 
     $stmt->bind_result($videoname, $username, $videourl, $uploaddate, $duration, $views); 
     while ($stmt->fetch()) { 
      echo "<a href='video.php?watch=$videourl'> 
        <li> 
         <div class='leftside'> 
          <img src='' width='100%' height='100%' style='background-color: blue;' >      
         </div> 

         <div class='rightside'> 
          <h4>$videoname</h4> 
          <p>$username</p> 
          <p>$views views</p> 
          <p>$duration</p>      
         </div> 
        </li> 
        </a>"; 
     } 
    } 
} 

次に、必要な場所で関数を呼び出します。

<div class="popular-video"> 
    <h2>Popular</h2> 
    <ul> 
     <?php foo(); ?> 
    </ul> 
</div> 
+0

私は一度だけクエリを呼び出すことを意図していましたが、フェッチはそれ自身のカテゴリに配置されます – freelixa

+0

その後、すべての結果を配列に格納してください。 –

+0

一度私はそのwhile関数の外で配列を呼び出すと、データの1つのみを表示します – freelixa

0

プレゼンテーションロジックとビジネスロジックを分離する必要があります。

$ stmt-> fetch_all()を呼び出して、結果を変数に保存してこの変数をループで使用することができます。

関連する問題