Правильное размещение HTML-кода внутри цикла while

#php

Вопрос:

У меня есть видеоплеер HTML (см. Код ниже) с некоторым Javascript (см. Код здесь). Мои видеофайлы записываются в базу данных (см. Ниже).

введите описание изображения здесь

Вот мой HTML-код:

 <video class="videoPlayer" id="videoplaylist" preload="auto" tabindex="0" controls="">
    <source src="video1.mp4">
</video>
<ul id="playlist">
    <li>
    <a href="video2.mp4"></a>
    </li>
    <li>
    <a href="video3.mp4"></a>
    </li>
</ul>
 

Я пытаюсь просмотреть видео из базы данных, но с правильным кодом структуры HTML выше. У меня возникли проблемы с правильным размещением кода внутри цикла while. В будущем, если в базу данных будет добавлено больше видео, единственное, что будет добавлено, — это больше li (элементов списка) под идентификатором «плейлист».

Например:

 <li>
<a href="video4.mp4"></a>
</li>
<li>
<a href="video5.mp4"></a>
</li>
<li>
<a href="video6.mp4"></a>
</li>
 

Вот мой SELECT sql с циклом while

 $sql = "SELECT title, video_src FROM videos WHERE username = 'admin' ";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_assoc()) {

    // HTML VIDEO PLAYER CODE NEEDS TO GO HERE
    echo $row['src'];

  }
} else {
  echo "no video results found";
}
 

Комментарии:

1. echo '<li><a href="'.$row['src'].'"></a></li>'; ???

2. @NiettheDarkAbsol спасибо за быстрый ответ! Да, это сработало бы. Проблема, с которой я, по-моему, сталкиваюсь, заключается в том, что касается <видео> в начале. если я помещу это в цикл while, он будет повторяться 3 раза, но он должен появиться только один раз.

3. @код, если вам нужен видеоплеер, появляется один раз, затем поместите его за пределы цикла ( выше, пока), а остальную логику внутри цикла

4. Да, я не знаю… получить это. Если вы хотите, чтобы что-то не зацикливалось, просто не вставляйте это в петлю, поставьте это перед петлей?

5. Прости! Это я понимаю. Взгляните сюда codeshare.io/Adg41l Я отредактировал то, что вы, ребята, упоминаете, но <исходный src=»‘.$строка[‘src’].»> находится вне цикла. Я бы не смог получить это из базы данных. Видеофайлы все время будут называться по-разному.

Ответ №1:

Добавлен ваш HTML-код в цикле while:

 if ($result->num_rows > 0) {
      // output data of each row
      while($row = $result->fetch_assoc()) {
    
        echo '<li>
    <a href="'.htmlspecialchars($row['src']).'"></a>
    </li>';
       
    
      }
    } else {
      echo "no video results found";
    }
 

Вне петли/без петли:

 if ($result->num_rows > 0) {
          
     $row = $result->fetch_assoc()
        
      echo '<li><a href="'.htmlspecialchars($row['src']).'"></a></li>';
           
        
  
   } else {
          echo "no video results found";
  }
 

Комментарии:

1. Спасибо за ответ, ответ! Я понимаю это 🙂 но, возможно, я не правильно объяснил это. Взгляните на codeshare.io/Adg41l Я обновил свой код. <видео> с <видео><исходный src=».$строка [‘src’].»> в начале может отображаться только один раз, и если я помещу это в цикл while, он будет повторяться, сколько раз цикл будет выполняться.

2. Что именно ты хочешь сделать?

3. Я пытаюсь поместить HTML-код, который я упомянул в исходном сообщении, внутри цикла, как вы мне показали, но я не могу поместить элемент <видео> внутри цикла, потому что тогда он будет повторять его, сколько раз цикл будет выполняться. Это нужно показать только один раз (вне цикла), НО тогда как бы я разместил ‘.$row[‘src’]; внутри исходного атрибута src, чтобы получить первый результат в базе данных. Имеет ли это смысл?

4. @код добавлен без решения цикла. Пожалуйста, проверьте это

Ответ №2:

используйте приведенный ниже код для создания списка. Как я вижу в вашем sql-запросе, имя столбца video_src

 if ($result->num_rows > 0) {
    echo '<ul>';
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo '<li><a href="'.htmlspecialchars($row['video_src']).'"></a></li>';
    }
    echo '</ul>';
}