Upload và hiển thị ảnh sản phẩm trong PHP

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 28 tháng 2, 2025

Trong bài học này, chúng ta sẽ học cách upload ảnh sản phẩm lên server, kiểm tra định dạng và kích thước file, lưu đường dẫn ảnh vào database và hiển thị hình ảnh sản phẩm trên trang web.

1. Upload và hiển thị ảnh sản phẩm

1.1 Tạo form upload ảnh sản phẩm

<form action="upload.php" method="POST" enctype="multipart/form-data">
    <label for="product_name">Tên sản phẩm:</label>
    <input type="text" name="product_name" required>
    <label for="product_image">Chọn ảnh sản phẩm:</label>
    <input type="file" name="product_image" accept="image/*" required>
    <button type="submit">Upload</button>
</form>

1.2 Xử lý upload file trong PHP

include 'config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $product_name = $_POST["product_name"];
    $target_dir = "uploads/";
    $target_file = $target_dir . basename($_FILES["product_image"]["name"]);
    $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
    
    // Kiểm tra định dạng file
    $allowed_types = ["jpg", "jpeg", "png", "gif"];
    if (!in_array($imageFileType, $allowed_types)) {
        die("Chỉ chấp nhận file ảnh JPG, JPEG, PNG & GIF.");
    }
    
    // Kiểm tra kích thước file (giới hạn 2MB)
    if ($_FILES["product_image"]["size"] > 2 * 1024 * 1024) {
        die("File ảnh quá lớn! Giới hạn tối đa 2MB.");
    }
    
    // Lưu file vào thư mục uploads
    if (move_uploaded_file($_FILES["product_image"]["tmp_name"], $target_file)) {
        $sql = "INSERT INTO products (name, image) VALUES (?, ?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("ss", $product_name, $target_file);
        if ($stmt->execute()) {
            echo "Tải lên thành công!";
        } else {
            echo "Lỗi lưu database: " . $stmt->error;
        }
    } else {
        echo "Lỗi khi tải file lên!";
    }
}

1.3 Hiển thị danh sách sản phẩm cùng ảnh

include 'config.php';
$sql = "SELECT * FROM products";
$result = $conn->query($sql);

while ($row = $result->fetch_assoc()) {
    echo "<div class='product'>";
    echo "<h3>" . $row["name"] . "</h3>";
    echo "<img src='" . $row["image"] . "' alt='Ảnh sản phẩm' width='150'>";
    echo "</div>";
}

2. Kết luận

  • Cách tạo form upload ảnh và xử lý file trong PHP.
  • Cách kiểm tra định dạng, kích thước file ảnh.
  • Cách lưu đường dẫn ảnh vào database và hiển thị ảnh trên trang web.
Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ