Visualizzare immagine da campo BLOB

Salve sono nuovo di questo forum,volevo chiedervi un aiuto in merito ad un malfunzionamento di uno script che sto provando a realizzare.Si tratta di visualizzare un immagine contenuta in un campo di tipo BLOB.

Ecco il codice:

<?php
Header("Content-type: image/jpeg"); 

$db = mysql_connect('$host','$user','$passw');

$query="Select * FROM immagini";
$result =mysql_db_query($database,$query,$db);
$num_rows =mysql_num_rows($result);

for($i=0;$i<=$num_rows-1;$i++){
$id=mysql_result($result,$i,'id');
$titolo=mysql_result($result,$i,'titolo');
$immagine=mysql_result($result,$i,'immagine');

echo "$immagine";

}
?>

ma non riesco a visualizzare nulla..come mai?

Grazie.

inviato 10 anni fa
Froz
Froz
1
modificato 10 anni fa
X 0 X

Semplicemente perché non puoi mostrare più di una immagine per volta.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie per la risposta, ma c'è una solo immagine nel database e persino se metto fuori dal ciclo for, l'echo, mi visualizza la X ,come se non la trovasse.

Tralaltro ho provato anche cosi:

<?php
$db = mysql_connect($host,$user,$passw);

$query="Select * FROM immagini";
$result =mysql_db_query($database,$query,$db);
$num_rows =mysql_num_rows($result);

for($i=0;$i<=$num_rows-1;$i++){
$id=mysql_result($result,$i,'id');
$titolo=mysql_result($result,$i,'titolo');
$immagine=mysql_result($result,$i,'immagine');
}

echo"<img src=\"$pagina?id=$id\" alt=\"immagine\" >";
?>

ma visualizzo sempre la X.

Spero che il mio non sia un caso anomalo.

risposto 10 anni fa
Froz
Froz
1
modificato 10 anni fa
X 0 X

Prova lo script che segue. Per prima cosa cambia i dati di connessione ed il nome del database. Inoltre ho supposto che esista un'immagine con id = 1. Se così non fosse devi cambiare la query (WHERE id = ?). Ho supposto anche che l'immagine sia una jpeg

<?php
// connessione e selezione del database
mysql_connect('localhost', 'utente_db', 'password_db')
or die('Connessione non riuscita: ' . mysql_error());

if(!mysql_select_db('nome_database'))
die('Selezione database fallita!');

// query per recuperare il file
$query = 'SELECT immagine FROM immagini WHERE id = 1';
$risultato = mysql_query($query) or die('Query non valida: ' . mysql_error());
$tmp = mysql_fetch_array($risultato);

// invio una intestazione contenente il tipo MIME
header('Content-Type:  image/jpeg');

// invio il contenuto del file
echo $tmp['immagine'];
?>

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ho provato lo script...incredibile non mi si visualizza l'immagine.

l'immagine è una jpeg e continuo a non capire..forse bisogna configurare qualcosa?

cmq nella mia tabella c'è una sola immagine di tipo blob e quindi c'è solo l'id 1.

risposto 10 anni fa
Froz
Froz
1
modificato 10 anni fa
X 0 X

a questo punto inizio a pensare che potrebbe essere l'immagine nel DB ad avere problemi...

dai un'occhiata a questo articolo:

http://www.phpnews.it/content/view/213/80/

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

guarda era una piccolezza che non crederai...l'estensione delle mie immagine era ed è .jpg e non jpeg, modificando il parametro nell'header ho comunque risolto in parte,difatti non riesco a visualizzarla ma il browser me la fa scaricare.

un'altra cosa..come mai non se ne può visualizzare più di una?

a me servono nel database le immagini per automatizzare gli aggiornamenti della galleria che sto cercando di creare.se mi dici che non se ne può visualizzare più di una vuol dire che sto faticando inutilmente?

Grazie per la disponibilità..comunque l'articolo che mi hai proposto l'avevo già letto ed era molto interessante..mi ha invogliato ad iscrivermi al forum.Complimenti.

risposto 10 anni fa
Froz
Froz
1
X 0 X

Se hai letto l'articolo avrai notato che conviene, all'atto della memorizzazione nel database, conservare anche il tipo di file, così quando si va ad estrarre l'immagine si ha a disposizione la corretta dicitura da mandare al browser come header.

Prima intendevo dire che uno script non può produrre più di una immagine. Questo perché quando il browser chiama lo script riceve un header che lo informa che ciò che sta per ricevere è una immagine. Allora il browser interpreta tutti i dati successivi come il contenuto dell'immagine stessa.

In generale infatti un browser effettua una richiesta diversa per ciascuna immagine presente in una pagina HTML. Quando nel browser visualizziamo una pagina che contiene immagini, per prima cosa viene richiesta al server la pagina in questione, poi leggendo l'HTML il browser si accorge che ci sono N immagini e pertanto effettua N ulteriori richieste al server web.

Nel caso di immagini nel database la cosa non cambia, il browser effettuerà sempre N richieste. L'astuzia sta nel fare in modo che il browser vada ad interpellare sempre lo stesso script, quello adibito all'estrazione delle immagini. Se infatti le varie immagini avranno URL del tipo

http://www.miosito.it/mostra_immagine.php?id=123

http://www.miosito.it/mostra_immagine.php?id=32

http://www.miosito.it/mostra_immagine.php?id=76

lo script mostra_immagine.php, leggendo il valore di $_GET['id'] ed utilizzandolo per effettuare la query di estrazione, fornirà di volta in volta un'immagine diversa.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda