Код выводящий картинку в код который выводит видео
У меня есть код который выводит картинку 
Теперь возникает вопрос, можно ли переделать или модифицировать код который выгружает картинку, так чтобы он мог выводить видео формата mp4?
Ниже предоставлен код который позволяет загружать изображение
<?php
class Product
{
// подключение к базе данных и имя таблицы
private $conn;
private $table_name = "products";
// свойства объекта
public $id;
public $name;
public $price;
public $description;
public $category_id;
public $image;
public $timestamp;
public function __construct($db)
{
$this->conn = $db;
}
// метод создания товара
function create()
{
// запрос MySQL для вставки записей в таблицу БД «products»
// запрос
$query = "INSERT INTO " . $this->table_name . "
SET name=:name, price=:price, description=:description,
category_id=:category_id, image=:image, created=:created";
$stmt = $this->conn->prepare($query);
// опубликованные значения
$this->name = htmlspecialchars(strip_tags($this->name));
$this->price = htmlspecialchars(strip_tags($this->price));
$this->description = htmlspecialchars(strip_tags($this->description));
$this->category_id = htmlspecialchars(strip_tags($this->category_id));
$this->image = htmlspecialchars(strip_tags($this->image));
// получаем время создания записи
$this->timestamp = date("Y-m-d H:i:s");
// привязываем значения
$stmt->bindParam(":name", $this->name);
$stmt->bindParam(":price", $this->price);
$stmt->bindParam(":description", $this->description);
$stmt->bindParam(":category_id", $this->category_id);
$stmt->bindParam(":created", $this->timestamp);
$stmt->bindParam(":image", $this->image);
if ($stmt->execute()) {
return true;
} else {
return false;
}
}
public function countAll()
{
// запрос MySQL
$query = "SELECT id FROM " . $this->table_name . "";
$stmt = $this->conn->prepare($query);
$stmt->execute();
$num = $stmt->rowCount();
return $num;
}
// метод для получения товаров
function readAll($from_record_num, $records_per_page)
{
// запрос MySQL
$query = "SELECT
id, name, description, price, category_id
FROM
" . $this->table_name . "
ORDER BY
name ASC
LIMIT
{$from_record_num}, {$records_per_page}";
$stmt = $this->conn->prepare($query);
$stmt->execute();
return $stmt;
}
// метод для получения товара
// метод для получения товара
function readOne()
{
// MySQL запрос
$query = "SELECT name, price, description, category_id, image
FROM " . $this->table_name . "
WHERE id = ?
LIMIT 0,1";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(1, $this->id);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$this->name = $row["name"];
$this->price = $row["price"];
$this->description = $row["description"];
$this->category_id = $row["category_id"];
$this->image = $row["image"];
}
// метод для обновления товара
function update()
{
// MySQL запрос для обновления записи (товара)
$query = "UPDATE
" . $this->table_name . "
SET
name = :name,
price = :price,
description = :description,
category_id = :category_id
WHERE
id = :id";
// подготовка запроса
$stmt = $this->conn->prepare($query);
// очистка
$this->name = htmlspecialchars(strip_tags($this->name));
$this->price = htmlspecialchars(strip_tags($this->price));
$this->description = htmlspecialchars(strip_tags($this->description));
$this->category_id = htmlspecialchars(strip_tags($this->category_id));
$this->id = htmlspecialchars(strip_tags($this->id));
$this->image = htmlspecialchars(strip_tags($this->image));
// привязка значений
$stmt->bindParam(":name", $this->name);
$stmt->bindParam(":price", $this->price);
$stmt->bindParam(":description", $this->description);
$stmt->bindParam(":category_id", $this->category_id);
$stmt->bindParam(":id", $this->id);
$stmt->bindParam(":image", $this->image);
// выполняем запрос
if ($stmt->execute()) {
return true;
}
return false;
}
// метод для удаления товара
function delete()
{
// запрос MySQL для удаления
$query = "DELETE FROM " . $this->table_name . " WHERE id = ?";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(1, $this->id);
if ($result = $stmt->execute()) {
return true;
} else {
return false;
}
}
// выбираем товары по поисковому запросу
public function search($search_term, $from_record_num, $records_per_page)
{
// запрос к БД
$query = "SELECT
c.name as category_name, p.id, p.name, p.description, p.price, p.category_id, p.created
FROM
" . $this->table_name . " p
LEFT JOIN
categories c
ON p.category_id = c.id
WHERE
p.name LIKE ? OR p.description LIKE ?
ORDER BY
p.name ASC
LIMIT
?, ?";
// подготавливаем запрос
$stmt = $this->conn->prepare($query);
// привязываем значения переменных
$search_term = "%{$search_term}%";
$stmt->bindParam(1, $search_term);
$stmt->bindParam(2, $search_term);
$stmt->bindParam(3, $from_record_num, PDO::PARAM_INT);
$stmt->bindParam(4, $records_per_page, PDO::PARAM_INT);
// выполняем запрос
$stmt->execute();
// возвращаем значения из БД
return $stmt;
}
// метод для подсчёта общего количества строк
public function countAll_BySearch($search_term)
{
// запрос
$query = "SELECT
COUNT(*) as total_rows
FROM
" . $this->table_name . " p
WHERE
p.name LIKE ? OR p.description LIKE ?";
// подготовка запроса
$stmt = $this->conn->prepare($query);
// привязка значений
$search_term = "%{$search_term}%";
$stmt->bindParam(1, $search_term);
$stmt->bindParam(2, $search_term);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
return $row["total_rows"];
}
// загрузка файла изображения на сервер
function uploadPhoto()
{
$result_message = "";
// если изображение не пустое, пробуем загрузить его
if ($this->image) {
// функция sha1_file() используется для создания уникального имени файла
$target_directory = "uploads/";
$target_file = $target_directory . $this->image;
$file_type = pathinfo($target_file, PATHINFO_EXTENSION);
// сообщение об ошибке пусто
$file_upload_error_messages = "";
}
// проверяем, разрешены ли определенные типы файлов
$allowed_file_types = array("jpg", "jpeg", "png", "gif", "mp4");
if (!in_array($file_type, $allowed_file_types)) {
$file_upload_error_messages .= "<div>Разрешены только файлы JPG, JPEG, PNG, GIF.</div>";
}
// убеждаемся, что файл не существует
if (file_exists($target_file)) {
$file_upload_error_messages .= "<div>Изображение уже существует. Попробуйте изменить имя файла.</div>";
}
// убедимся, что отправленный файл не слишком большой (не может быть больше 1 МБ)
if ($_FILES["image"]["size"] > (10485760)) {
$file_upload_error_messages .= "<div>Размер изображения не должен превышать 1 МБ.</div>";
}
// убедимся, что папка uploads существует, если нет, то создаём
if (!is_dir($target_directory)) {
mkdir($target_directory, 0777, true);
}
// если $file_upload_error_messages всё ещё пуст
if (empty($file_upload_error_messages)) {
// ошибок нет, пробуем загрузить файл
if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
// фото загружено
} else {
$result_message .= "<div class='alert alert-danger'>";
$result_message .= "<div>Невозможно загрузить фото.</div>";
$result_message .= "<div>Обновите запись, чтобы загрузить фото снова.</div>";
$result_message .= "</div>";
}
}
// если $file_upload_error_messages НЕ пусто
else {
// это означает, что есть ошибки, поэтому покажем их пользователю
$result_message .= "<div class='alert alert-danger'>";
$result_message .= "{$file_upload_error_messages}";
$result_message .= "<div>Обновите запись, чтобы загрузить фото.</div>";
$result_message .= "</div>";
}
return $result_message;
}
}
В нем прописываются условия загрузки, я туда добавил в форматы поддерживаемых типов файлов mp4.
<!-- HTML-таблица для отображения информации о товаре -->
<table class="table table-hover table-responsive table-bordered">
<tr>
<td>Название</td>
<td><?= $product->name; ?></td>
</tr>
<tr>
<td>Рейтинг</td>
<td><?= $product->price; ?></td>
</tr>
<tr>
<td>Описание</td>
<td><?= $product->description; ?></td>
</tr>
<tr>
<td>Категория</td>
<td>
<?php // выводим название категории
$category->id = $product->category_id;
$category->readName();
echo $category->name;
?>
</td>
</tr>
<tr>
<td>Изображение</td>
<td>
<?= $product->image ? "<img src='uploads/{$product->image}' style='width:300px;' />" : "Изображение не найдено."; ?>
</td>
</tr>
</table>
<?php // подвал
require_once "layout_footer.php";
Но в итоге после того как попробовал загрузить видео в формате mp4 ошибок не выдало но и видео не отображается 
Но после открытия Страницы со всей информацией, вместо видео там иконка как на скрине 