2012-11-03 44 views
6

Tôi đang cố gắng hiển thị 5 hình ảnh cuối cùng được tải lên bảng "cửa hàng" của tôi trong MySql. Tôi là một noob hoàn chỉnh với PHP và cơ sở dữ liệu và tôi đã đọc rất nhiều về cách thực hiện điều này nhưng không có may mắn.Làm thế nào để hiển thị hình ảnh BLOB được lưu trữ trong cơ sở dữ liệu MySql?

Tôi có thể lưu trữ và hiển thị từng ảnh một nhưng tôi muốn có thể có một bộ sưu tập các loại để hiển thị 5 ảnh được tải lên gần đây nhất.

bất kỳ lời khuyên hoặc trợ giúp nào sẽ được đánh giá cao nhờ!

p.s. Tôi biết nó cau mày khi lưu trữ hình ảnh vào một cơ sở dữ liệu như thế này nhưng dự án này chỉ là để thực hành.

index.php

<!DOCTYPE html> 
<html> 
<head> 
<title>Project One</title> 
</head> 

<body> 

<form action="index.php" method="POST" enctype="multipart/form-data"> 
    File: 
    <input type="file" name="image"> <input type="submit" value="Upload"> 
<form> 
<p /> 

<?php 

//connect to database 
(connect to server) 
(select correct DB) 

//file properties 
$file = $_FILES['image']['tmp_name']; 

if (!isset($file)) 
    echo "please select an image."; 
else 
    { 
    $image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); 
    $image_name = $_FILES['image']['name']; 
    $image_size = getimagesize($_FILES['image']['tmp_name']); 

    if($image_size==FALSE) 
    echo "That's not an image."; 
    else 
    { 
    if (!$insert = mysql_query("INSERT INTO store VALUES ('', '$image_name', '$image')")) 
     echo "Problem Uploading Image."; 
    else 
     { 

     $lastid = mysql_insert_id(); 
     echo "Image uploaded. <p />Your image:<p /><img src=get.php?id=$lastid>"; 

     } 
    } 
    } 

?> 

<p /> 
<p /> 
<a href="http://WEBSITE.com/gallery.php"> Go to Gallery </a> 
</body> 

</html> 

get.php

<?php 

    //connect to database 
    (connect to server) 
    (select correct DB) 

$id = addslashes($_REQUEST['id']); 

$image = mysql_query("SELECT * FROM store WHERE id=$id"); 
$image = mysql_fetch_assoc($image); 
$image = $image['image']; 

header("Content-type: image/jpeg"); 

echo $image; 

?> 
+0

Kiểm tra này : http://stackoverflow.com/questions/118144/whats-the-most-efficient-way-to-select-the-last-n-rows-in-a-table-without-chang – Vucko

Trả lời

6

Đây là những gì tôi sử dụng khi tôi muốn làm một cái gì đó như thế ... một thời gian dài trước đây! = P

$sql = "SELECT image FROM table WHERE cond ORDER BY xxxx DESC LIMIT 5"; 
$result = mysqli_query($db,$sql); 
while($arraySomething = mysqli_fetch_array($result)) 
{ 
    echo "<img src='php/imgView.php?imgId=".$arraySomething."' />"; 
} 
+0

Có nhiều thứ để nó hơn thế? Tôi đã thử thêm vào và nó in một hình ảnh bị hỏng ... làm thế nào tôi nên đi về việc tạo ra một vòng lặp mà sẽ in mỗi hình ảnh đếm ngược từ giá trị tối đa của hàng? cho 1..5 loop 'in hình ảnh với max_id' sau đó suất này từ max_id ... một cái gì đó dọc theo những đường – Ktmock13

+0

Ví dụ của tôi không được cho trực tiếp sao chép/dán Tôi chỉ hiển thị cho bạn làm thế nào để thêm một. Những gì bạn có thể làm là cơ bản thêm một LIMIT của 5 để truy vấn của bạn và đặt nó để hiển thị cuối cùng 5. Sau đó làm một cái gì đó như thế này: $ sql = "SELECT * FROM bảng WHERE cond LIMIT 5"; $ result = mysqli_query ($ db, $ sql); trong khi ($ arraySomething = mysqli_fetch_array ($ result)) { // echo img tại đây } – Manatax

5

Tôi thử phương pháp đầu tiên với header('content-type: image/jpeg'); nhưng kết thúc bằng hình ảnh không được hiển thị. Sau một vài google thông qua trang web tôi tìm thấy giải pháp mà tôi có thể hiển thị hình ảnh từ cơ sở dữ liệu trang của tôi

thử điều này:

mysql_connect("localhost","root","")or die("Cannot connect to database"); //keep your db name 
mysql_select_db("example_db") or die("Cannot select database"); 
$sql = "SELECT * FROM `article` where `id` = 56"; // manipulate id ok 
$sth = mysql_query($sql); 
$result=mysql_fetch_array($sth); 
// this is code to display 
echo '<img src="data:image/jpeg;base64,'.base64_encode($result['image_file']).'"/>' 
+0

Cảnh báo mysql_query không được chấp nhận trong PHP 5.5.0, và nó đã bị xóa trong PHP 7.0.0. Thay vào đó, nên sử dụng phần mở rộng MySQLi hoặc PDO_MySQL. – Manatax

1
mysql_connect("localhost","root","")or die("Cannot connect to database"); 

//keep your db name 
mysql_select_db("example_db") or die("Cannot select database"); 

$sql = "SELECT * FROM `article` where `id` = 56"; 
// manipulate id ok 
$sth = mysql_query($sql); 
$result=mysql_fetch_array($sth); 
// this is code to display 

echo '<img src="data:image/jpeg;base64,'.base64_encode($result['image_file']).'"/> width="xxxx" height="xxxx"'; 

Thêm chiều cao và chiều rộng cũng

+0

Cảnh báo mysql_query không được chấp nhận trong PHP 5.5.0, và nó đã được gỡ bỏ trong PHP 7.0.0. Thay vào đó, nên sử dụng phần mở rộng MySQLi hoặc PDO_MySQL. – Manatax

Các vấn đề liên quan