#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>';
}