2012-11-03 11 views
6

Próbuję wyświetlić 5 ostatnich zdjęć przesłanych do mojego "sklepu" tabeli w MySql. Jestem kompletnym noobem do PHP i baz danych i dużo czytałem na ten temat, ale bez powodzenia.Jak wyświetlić obraz BLOB przechowywany w bazie danych MySql?

Mogę przechowywać i wyświetlać obrazy pojedynczo, ale chciałbym mieć galerię sortów, aby pokazać ostatnie 5 przesłanych.

wszelkie porady lub pomoc byłyby bardzo cenne dzięki!

p.s. Wiem, że to marszczyło brwi na przechowywanie zdjęć do takiej bazy danych, ale ten projekt jest tylko dla praktyki.

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

sprawdzić ten : http://stackoverflow.com/questions/118144/whats-to-most-efficient-way-to-select-the-last-n-rows-in-a-table-without-chang – Vucko

Odpowiedz

6

To co kiedyś, gdy chciałem zrobić coś takiego ... dawno temu! = 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

Czy jest więcej to więcej niż to? Próbowałem to dodać i wypisuje zepsuty obraz ... jak powinienem utworzyć pętlę, która wydrukuje każde zdjęcie odliczające od maksymalnej wartości wiersza? dla 1..5 pętli „drukuje obraz z max_id” następnie ubytki z max_id ... coś wzdłuż tych linii – Ktmock13

+0

Mój przykład nie był do bezpośredniego kopiowania/wklejania właśnie pokazano, jak dodać. Możesz zasadniczo dodać LIMIT 5 do zapytania i zamówić je, aby pokazać ostatnie 5. Następnie wykonaj coś takiego: $ sql = "WYBIERZ * Z tabeli WHERE cond LIMIT 5"; $ result = mysqli_query ($ db, $ sql); while ($ arraySomething = mysqli_fetch_array ($ wynik)) { // echa IMG tutaj } – Manatax

5

Próbuję pierwsze podejście z header('content-type: image/jpeg');, ale kończy się z obrazem nie pokazano. Po kilku google za pośrednictwem strony internetowej znalazłem rozwiązanie, które może wyświetlać obraz z bazy do mojej strony

spróbuj tego:

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

ostrzegawczy mysql_query została zaniechana PHP 5.5.0, i usuwa się w PHP 7.0.0. Zamiast tego należy użyć rozszerzenia MySQLi lub 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"'; 

Dodaj wysokość i szerokość także

+0

Ostrzeżenie mysql_query zostało wycofane w PHP 5.5.0 i zostało usunięte w PHP 7.0.0. Zamiast tego należy użyć rozszerzenia MySQLi lub PDO_MySQL. – Manatax

Powiązane problemy