2012-11-03 10 views
6

Sto cercando di visualizzare le ultime 5 immagini caricate nella mia tabella "store" in MySql. Sono un noob completo di PHP e database e ho letto molto su come farlo ma senza fortuna.Come visualizzare un'immagine BLOB memorizzata nel database MySql?

Posso memorizzare e visualizzare le immagini una alla volta, ma mi piacerebbe poter avere una galleria di generi per mostrare gli ultimi 5 caricati.

qualsiasi consiglio o aiuto sarebbe molto apprezzato grazie!

p.s. So che è disapprovato per memorizzare le immagini in un database come questo, ma questo progetto è solo per la pratica.

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

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

risposta

6

Questo è quello che ho usato quando ho voluto fare qualcosa di simile ... molto tempo fa! = 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'è altro a questo? Ho provato ad aggiungere questo e si stampa un'immagine rotta ... come dovrei fare per creare un ciclo che stamperà ogni immagine contando dal valore massimo della riga? loop 'immagine Stampe con max_id' 1..5 poi decrementa da max_id ... qualcosa del genere – Ktmock13

+0

Il mio esempio non fosse per copia/incolla diretta Stavo solo che vi mostra come aggiungere uno per. Quello che puoi fare è fondamentalmente aggiungere un LIMIT di 5 alla tua query e ordinarlo per mostrare l'ultimo 5. Quindi fai qualcosa di simile a questo: $ sql = "SELECT * FROM table WHERE cond LIMIT 5"; $ result = mysqli_query ($ db, $ sql); while ($ arraySomething = mysqli_fetch_array ($ risultato)) { // eco img qui } – Manatax

5

provo il primo approccio con header('content-type: image/jpeg'); ma finiscono con l'immagine non mostrato. Dopo un paio di google attraverso il sito web ho trovato la soluzione che posso visualizzare l'immagine dal database alla mia pagina

provare questo:

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

mysql_query Attenzione è stata sconsigliata a PHP 5.5.0, ed è stato rimosso in PHP 7.0.0. Invece, dovrebbe essere usata l'estensione MySQLi o 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"'; 

aggiungere l'altezza e la larghezza anche

+0

Avviso mysql_query è stato ritirato in PHP 5.5.0 ed è stato rimosso in PHP 7.0.0. Invece, dovrebbe essere usata l'estensione MySQLi o PDO_MySQL. – Manatax

Problemi correlati