Visualizzare immagini caricate in un DB MySQL!! (da tutorial)

schizzechea

Nuovo Utente
6 Mar 2004
29
0
0
44
www.schizzechea.it
Salve a tutti, ho appena finito di testare il Tutorial presente sul sito al seguente indirizzo:
http://www.mrwebmaster.it/tutorial/php/tutorial605.htm

La cosa sembra interessante ma ho un problema e chiedo aiuto a coloro che hanno avuto risultati migliori.

L'inserimento dei dati nel database avviene correttamente, il problema sorge quando voglio visualizzare l'immagine memorizzata.

I dati che attualmente riesco a visualizzare, sono i dati grezzi (Binari) inseriti nel campo BLOB del DB MySQL e non l'immagine in quanto tale.

Ho cambiato il Content type come specificato anche nel tutorial non ottenedo alcun risultato....qualcuno sa come funziona???

Ho notato che nel campo TYPE che memorizzo nel DB per una immagine JPG mi inserisce "image/pjpeg", è normale??

NB: So che è possibile memorizzare il percorso delle immagini nel db, è la tecnica che ho utilizzato sempre, adesso sarei interessato a ricavare il meglio da questa tecnica.... ;-)

Grazie!!!!

PS Questo è il codice della mia pagina show.php c'è qualche errore???

Codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" Content-type: "image/jpeg; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>

<body>
<?
if (isset($_GET['id']))
{
  $id = @intval($_GET['id']);
  @include 'config.php';
  $sql = "SELECT id,type,immagine FROM immagini WHERE id='$id'";
  $result = @mysql_query($sql) or die(mysql_error ());
  $row = @mysql_fetch_array($result);
  $id_img = $row['id'];
  $type = $row['type'];
  $img = $row['immagine'];
  if (!$id_img)
  {
    echo "Id sconosciuto";
  }else{
    @header ("Content-type: ".$type);
    echo $img;
  }
}else{
  echo "Impossibile soddisfare la richiesta.";
}
?>

</body>
</html>
 

mptech

Utente Attivo
20 Gen 2005
244
0
0
www.mptechnology.it
ciao io uso questo tipo di script:

PHP:
<img src="downloadfile.php?id=<?php echo $row["id"]; ?>"  border="no">
dove l'id equivale all' id dell'immagine che ho salvato e che nella stessa pagina ho richiamato

mentre il file di download:

PHP:
<?php
$blobId=$_GET['id'];
if(!is_numeric($blobId)) 
die("blobId invalido");
include("conn.php");// conn.php contiene i dati per la connessione col database 
$dbQuery = "SELECT id,img,file FROM news WHERE id=$blobId";
$result = mysql_query($dbQuery) or die("File non presenti nel Database"); 
if(mysql_num_rows($result) == 1) 
{ 
$fileType = @mysql_result($result, 0, "file"); 

$fileContent = @mysql_result($result, 0, "img");

header("Content-type: $fileType");  
	   echo $fileContent;
	    } else { echo "non esiste Record."; }
		?>
in questo modo visualizzo l'immagine senza problemi

guarda se ti può interessare

ciao ciao :byebye: :byebye:
 

schizzechea

Nuovo Utente
6 Mar 2004
29
0
0
44
www.schizzechea.it
Grazie per la risposta ma non ci siamo capiti....

il mio problema è che visualizzo i dati grezzi e non l'immagine

Dati grezzi significa qualcosa del genere:
Codice:
õ>}Ëãóv_Ç®î]–î]¯=í×s:“¯m0ÑboÍ6ÅŒªSŒ½*ž :
cé½O…õ½^_¦N&_O H"@ê|›;år´WÍèMåÜz×&¬µ¦ºëËJr#'No?ïøþ“§†üåÑÁêØŒ¨‹`ÓŸDξÞ}‹”^¤xžÿ¯ËõÆ»aÙçHŲëO¤¬öSçVëHŸ>ÛM:¸×çÚ*"@‰$D€`äù]-*æé¹
ËéMêoåÕ7bç>ó]W1Ò‹•\ÊSUy®r=^O_šîz+Òòú Ž-‡³òª³×Ómó'?]ŒmÖ=ÚÚ2ìÚw>‘ã[>Ï/Ùç—ÝvyyÌ< n±8ng.ŽóÒO7|ÙÈcÙvë|Z2¨µ2zþÖÜ^õ™ã~£×æm:PH D€$:Øs>W°
Che sarebbero i dati memorizzati nel campo BLOB del db MySQL.

Con il tuo codice ho esattamente lo stesso problema in quanto non è la visualizzazione in quanto Quety SQL il mio problema ma il risultato della query che non è quello previsto!!!

Credo che il problema sia cn Content Type ma non ho capito come risolverlo.....
Grazie
 

mptech

Utente Attivo
20 Gen 2005
244
0
0
www.mptechnology.it
ma come l'hai creato il database per l'inserimento delle immagini?
 

mptech

Utente Attivo
20 Gen 2005
244
0
0
www.mptechnology.it
perch?

io le inserisco senza problemi
PHP:
$immagine = $_FILES['immagine']['tmp_name']; 
$immagine_name1 = $_FILES['immagine']['name'];
$immagine_size1 = $_FILES['immagine']['size']; 
$immagine_type1 = $_FILES['immagine']['type'];

$fileHandle1 = fopen($immagine, "r"); 
$fileContent1 = fread($fileHandle1, $immagine_size1); 
$fileContent1 = addslashes($fileContent1);
 

schizzechea

Nuovo Utente
6 Mar 2004
29
0
0
44
www.schizzechea.it
La tabella tramite codice:

Codice:
$sql = 'CREATE TABLE `immagini` ('
. ' `id` int(11) NOT NULL auto_increment,'
. ' `nome` varchar(50) NOT NULL default "",'
. ' `size` varchar(25) NOT NULL default "",'
. ' `type` varchar(25) NOT NULL default "",'
. ' `immagine` blob NOT NULL,'
. ' PRIMARY KEY (`id`)'
. ' )';
e il database manulamente con il software che uso sempre
DB Tools Manager Professional.

Ho provato anche a fare tutto con il DB manager che manualemnte.....niente!!!
 

mptech

Utente Attivo
20 Gen 2005
244
0
0
www.mptechnology.it
PHP:
CREATE TABLE `prodotti` (
  `id` int(11) NOT NULL auto_increment,
  `testo` longtext NOT NULL,
  `img` blob NOT NULL,
  `file` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`id`)
)
 

schizzechea

Nuovo Utente
6 Mar 2004
29
0
0
44
www.schizzechea.it
...ho capito ma il fatto che nessuno faccia così non significa che il problema non debba essere risolto, se PHP e MYSQL da questa possibilità perchè precludersi la possibilità di farlo anche se nessuno lo fa???

Grazie lo stesso!
 

mptech

Utente Attivo
20 Gen 2005
244
0
0
www.mptechnology.it
codice del form

HTML:
<form action="inserimento.php" method="post" enctype="multipart/form-data">
	<p><br>
	  <span class="style1">inserimento prodotti</span></p>
      <p><span class="style1">descrizione</span><br>
        <textarea cols="40" rows="4" name="desc"></textarea>
      </p>
      <p><input type="file" name="immagine"></p>
	  <input name="invia" type="submit" value="SALVA">
	  </form>
codice ricezione e inserimento
PHP:
$desc=$_POST['desc'];

$immagine = $_FILES['immagine']['tmp_name']; 
$immagine_name1 = $_FILES['immagine']['name'];
$immagine_size1 = $_FILES['immagine']['size']; 
$immagine_type1 = $_FILES['immagine']['type'];

$fileHandle1 = fopen($immagine, "r"); 
$fileContent1 = fread($fileHandle1, $immagine_size1); 
$fileContent1 = addslashes($fileContent1);

include("conn.php");
$query="INSERT INTO prodotti VALUES (0,'$desc','$fileContent1','$immagine_type1')";
mysql_query($query) or die ("impossibile aggiungere i file nel database");
codice di richiamo

PHP:
	    <?php
include("conn.php");
$query="SELECT id,img,testo,file FROM prodotti ";
$result=mysql_query($query) or die ("no file");
while($row=mysql_fetch_array($result))
{
 ?> 
     <br><p> <img src="downloadfile1.php?id=<?php echo $row["id"]; ?>" width="94" height="147" border="no"></p>
	  <p>
	  <form method="post" action="modifica.php?id=<?php echo $row["id"]; ?>">
	    <textarea cols="30" rows="3" name="desc"><?php echo $row["testo"]; ?></textarea><br>
     <input type="submit" value="modifica testo"></p>
	  </form>
	  <form method="post" action="cancella.php?id=<?php echo $row["id"]; ?>"><input type="submit" value="cancella"></form>
	  <form action="modifica1.php?id=<?php echo $row["id"]; ?>" method="post" enctype="multipart/form-data">
	      <p><input type="file" name="immagine"></p>
	  <input name="invia" type="submit" value="modifica immagine">
	  </form>
	  <p>-------------------------------------------------------------------------------</p>
        
        <?php
}?>
io con questo codice non ho mai avuto problema
 

mptech

Utente Attivo
20 Gen 2005
244
0
0
www.mptechnology.it
ti metto l'esempio online se pazienti 5 minuti

e poi ti do il link per scaricare i file zippati
 

mptech

Utente Attivo
20 Gen 2005
244
0
0
www.mptechnology.it
ecco il link dove troverai l'esempio online e i file da scaricare il codice della tabella è al suo interno

http://www.mptechnology.it/prova/index.php

fammi sapere se va bene

:hammer: :hammer: :byebye: :byebye: :byebye:
 

schizzechea

Nuovo Utente
6 Mar 2004
29
0
0
44
www.schizzechea.it
Si, online l'esempio funziona anche se credo debba essere gestita la dimensione massima e/o minima dell'immagine in upload perchè come vedi dal penultimo esempio online l'immagine non viene vsualizzata....

Comunque ho scricato il tuo codice, lo verifico e ti faccio sapere...

Grazie 10000!!!!
:byebye: :byebye:
 

mptech

Utente Attivo
20 Gen 2005
244
0
0
www.mptechnology.it
si le immagini le puoi gestire senza problemi quello lo puoi fare con javascript o con html senza problemi
 

roxpix

Nuovo Utente
27 Ott 2006
1
0
0
dimensione immagini

scusami, come si possono gestire le dimensioni con javascript o con html? potresti farmi un esempio?
grazie
 

alep84

Nuovo Utente
6 Nov 2006
1
0
0
ecco il link dove troverai l'esempio online e i file da scaricare il codice della tabella è al suo interno

http://www.mptechnology.it/prova/index.php

fammi sapere se va bene

:hammer: :hammer: :byebye: :byebye: :byebye:
Ciao Mptech, ho provato il tuo esempio e funziona bene, mi chiedevo se c'è la possibilità di caricare più di un'immagine alla volta.
Ho "duplicato" i campi nella tabella e ho provato a modificare il file inserimento.php con scarsi risultati :hammer:

Se puoi darmi qualche indicazione te ne sarei grato :)

Alla prossima :byebye: :byebye:
 

diabolik05

Nuovo Utente
1 Ago 2010
1
0
0
vorrei visualizzare le immagini nel mio database msql

Salve

Sono un nuovo utente,
Vorrei chiedervi un aiuto
Non riesco a visualizzare tutte le immagini che ho caricato nel database.
Il codice che ho inserito mi visualizza solo una delle immagini
Io invece le vorrei visualizzzare tutte.
ecco il codice:

@require 'config.php';
while ($result21 = mysql_fetch_array($query21))

{
header ("content-type: image/jpeg");
$immagine = $result21["immagine"];
echo "$immagine/n";
}

Dove ho sbagliato ?