Memorizzare un'immagine in db mysql

vodka

Utente Attivo
25 Giu 2010
128
0
0
Anche cercando su alcune guide non sono riuscito a capire come salavre un'immagine in un db, nn capisco il funzionamento del codice.
Vi posto ciò ke ho scritto:
PHP:
<html>
	<head>
		<title>Memorizzazione del file sul server</title>
	</head>
	<body>
	<H3>Informazioni sul file trasferito:</H3>
	<?php
		if ($_FILES['file_name']['error'] != UPLOAD_ERR_OK)
		{
			print("C'è stato un errore nel trasferimento<BR>\n");
		}
		else
		{
			copy($_FILES['file_name']['tmp_name'],".\\".$_FILES['file_name']['name']);
			unlink($_FILES['file_name']['tmp_name']);
			print("Nome del file temporaneo: " . $_FILES['file_name']['tmp_name'] ."<BR>\n");
			print("Nome del file trasferito: " . $_FILES['file_name']['name'] . "<BR>\n");
			print("Dimensione: " . $_FILES['file_name']['size'] . "<BR>\n");
			print("Tipo: " . $_FILES['file_name']['type'] . "<BR>\n");
			print("</hr>\n");
		}
		$host='127.0.0.1';
		$user='mionome';
		$password='miapassword';
		$database='iscrizione_utente';
		$db=mysql_connect($host, $user, $password) or die ("Impossibile connettiersi al server $host!");
		mysql_select_db($database, $db) or die ("Impossibile connettersi al database $database!");

		$stringa_c=
		"CREATE TABLE IF NOT EXISTS foto (
			id_foto int(10) NOT NULL auto_increment,
			nome varchar(20) not null, size varchar(30) not null, type varchar(20) not null, immagine varchar(20) not null, PRIMARY KEY (`id_foto`))";
			
		var_dump($stringa_c);
		mysql_query($stringa_c) or die (mysql_error());  


		@include 'upload.php';
		if (isset($_FILES['file']))
		{
		  upload();
		}
		echo "
		<h3>Upload</h3>
		<form enctype=\"multipart/form-data\" 
		action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
		<input type=\"hidden\" name=\"MAX_FILE_SIZE\" 
		value=\"300000\" />
		<input type=\"file\" name=\"file\" size=\"40\" />
		<input type=\"submit\" value=\"Invia\" />
		</form>
		<br /><a href=\"link.php\">Elenco</a>";
ovviamente nel form precedente aggiungo il film in questo modo:

PHP:
<FORM enctype="multipart/form-data" ACTION="memorizzazione.php" method="post">
		<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" value="1024000">
		<input name="file_name" type="file" id="foto">
		<INPUT TYPE="submit" value="Inserisci foto">
</FORM>

il contenuto della funzione upload è questo:
PHP:
<?php
		function upload()
		{
		  $result = false;
		  $immagine = '';
		  $size = 0;
		  $type = '';
		  $nome = '';
		  $max_size = 300000;
		  $result = @is_uploaded_file($_FILES['file']['tmp_name']);
		  if (!$result)
		  {
			echo "Impossibile eseguire l'upload.";
			return false;
		  }else{
			$size = $_FILES['file']['size'];
			if ($size > $max_size)
			{
			  echo "Il file è troppo grande.";
			  return false;
			}
			$type = $_FILES['file']['type'];
			$nome = $_FILES['file']['name'];
			$immagine = @file_get_contents($_FILES['file']['tmp_name']);
			$immagine = addslashes ($immagine);
			@include 'config.php';
			$sql = "INSERT INTO foto (nome, size, type, immagine) VALUES ('$nome','$size','$type','$immagine')";
			$result = @mysql_query ($sql) or die (mysql_error());
			return true;
		  }
		}
?>

L'errore che mi restituisce è impossibile eseguire l'upload
Non sò proprio dove rimediare ho fatto un pò di confusione .
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
togli tutte quelle @, altrimenti non riesci a vedere gli errori
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
anche togliendo tutte le @ nn mi dà nessun errore, e non mi carica l'immagine sul db.
Non ho idea di come fare
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
proprio non riesco a capire come fare x carica l'immagine sul db..potete aiutarmi?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Prova a modificare queste righe:
PHP:
echo "Impossibile eseguire l'upload."; 
return false;
Così:
PHP:
var_dump($_FILES['file']['error']);
echo "Impossibile eseguire l'upload."; 
return false;
In modo da vedere quale errore restituisce.
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
ok ho risolto l'inserimento dell'immagine nel db.
ora non riesco ad estrarre il record cioè non riesco a mostrare l'immagine
ho provato così:
PHP:
@include 'config.php';
				$sql = "SELECT id_foto, nome FROM foto ORDER BY id_foto DESC";
				$result = mysql_query($sql) or die (mysql_error ());
				while ($row = mysql_fetch_array($result))
				{
				  $id = $row['id_foto'];
				  $nome = $row['nome'];
				  echo "<a href=\"show.php?id=".$id."\">".$nome."</a><br />";
				}

				if (isset($_GET['id_foto']))
				{
				  $id = intval($_GET['id_foto']);
				  $sql = "SELECT id_foto,type,immagine FROM foto WHERE id_foto='$id'";
				  $result = mysql_query($sql) or die(mysql_error ());
				  $row = mysql_fetch_array($result);
				  $id_img = $row['id_foto'];
				  $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.";
				}
mi dà i link con il nome delle immagini archiviate in db ma mi restituisce impossibile soddisfare la richiesta cioè di mostrarmi l'immagine
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Nel tuo script c'è un problema di fondo: gli header devono essere inviati prima di qualunque altra informazione, e tutta la pagina deve essere nello stesso formato. Non puoi inviare un header che specifica che il tipo del documento è un'immagine e poi visualizzare codice HTML, o viceversa. Per risolvere ti consiglio di creare un'altra pagina, chiamata, ad esempio, image.php, con questo contenuto:
PHP:
<?php
require 'config.php';

$id = isset($_GET['id_foto']) ? intval($_GET['id_foto']) : 0;

$sql = "SELECT id_foto,type,immagine FROM foto WHERE id_foto = {$id}";
$result = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($result) == 0)
{
	header('HTTP/1.1 404 Not Found');
	exit();
}

$row = mysql_fetch_array($result);

header("Content-type: {$row['type']}");
echo $row['immagine'];
?>
E poi modifichi il file che hai postato così:
PHP:
<?php
require 'config.php';

$sql = 'SELECT id_foto, nome FROM foto ORDER BY id_foto DESC';
$result = mysql_query($sql) or die (mysql_error());

while($row = mysql_fetch_array($result))
{
	$id = $row['id_foto'];
	$nome = $row['nome'];
	echo "<a href=\"show.php?id={$id}\">{$nome}</a><br />";
}

if(isset($_GET['id_foto']))
	echo "<img src=\"image.php?id_foto={$_GET['id_foto']}\" />";
else
	echo "Impossibile soddisfare la richiesta.";
?>
Vedi se in questo modo funziona.
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
ho fatto come mi hai suggerito e mi dice HTTP 404 pagina non trovata
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
ho rifatto come avevo impostato io e ho spostato la seconda parte dello script in image.php, e modificato $_GET['id_foto'] con $_GET['id'] così non mi restituisce più errore però mi dà il quadratino con la x senza visualizzarmi la foto.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Non ti restituisce l'errore Pagina non trovata perché ho scelto io di visualizzarlo se l'immagine non veniva trovata. Se avessi tolto la condizione lo script si sarebbe comportato esattamente come fa il tuo. Quindi riprendi il mio script, individua questa riga:
PHP:
$sql = "SELECT id_foto,type,immagine FROM foto WHERE id_foto = {$id}";
E aggiungi sotto:
PHP:
var_dump($sql);
Poi accedi direttamente alla pagina (http://www.tuosito.com/image.php?id_foto=1) e vedi che cosa ti restituisce.
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
questo è ciò che mi restituisce:
string(56) "SELECT id_foto,type,immagine FROM foto WHERE id_foto = 0"
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
ok ora ho risolto non mi dà errore ma mi esce sempre il quadratino con la x rossa ke nn visualizza l'immagine
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
PHP:
$ricevuta = mysql_query("SELECT * FROM datiutente ORDER BY id");

				$numero_record = mysql_num_rows($ricevuta);
				mysql_data_seek($ricevuta, $numero_record - 1);
				 
				$row = mysql_fetch_assoc($ricevuta);
				echo 'Nome: ', $row['nome'], "\n";
				echo 'Cognome: ', $row['cognome'], "\n";
				echo 'Matricola: ', $row['matricola'], "\n";
				echo 'Anno: ', $row['data_iscr'], "<BR>\n";

				
				$ricevuta = mysql_query("SELECT * FROM foto ORDER BY id");

				$numero_record = @mysql_num_rows($ricevuta);
				@mysql_data_seek($ricevuta, $numero_record - 1);
				 
				$row = @mysql_fetch_assoc($ricevuta);
				echo 'La tua foto: ', '<img src="'.$row['immagine'].'"/ height="300" weidth="100 alt="immagine"">';

Ti spiego cosa ho modificato, l'immagine viene salvata con il persocorso nel db e non più in blob così attraverso questo codice io estraggo l'ultima immagine inserita (ke è quella ke mi interessa) e gli ultimi dati inseriti (nome, cognome, matricola, dataiscr).
Il problema resta ke l'immagine non viene visualizzata e compare un riquadro con una crocetta rossa.
Ho provato ad ingrandire l'altezza e la larghezza con le proprietà width e height ma nn è qullo il problema.
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
nnt da fare, questi sono gli errori che mi mostra:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in E:\Program Files\EasyPHP-5.3.2i\www\visualizzadati.php on line 33

Warning: mysql_data_seek() expects parameter 1 to be resource, boolean given in E:\Program Files\EasyPHP-5.3.2i\www\visualizzadati.php on line 34

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in E:\Program Files\EasyPHP-5.3.2i\www\visualizzadati.php on line 36

e sotto mi esce il riquadro con la x rossa
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao, non ho seguito molto la discussione, ma mi sembra che la seconda query sia errata

$ricevuta = mysql_query("SELECT * FROM foto ORDER BY id");
non dovrebbe essere
$ricevuta = mysql_query("SELECT * FROM foto ORDER BY id_foto");

qundo crei la tabella foto se non ho visto male l'id lo chiami in_foto
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
a già hai ragione... sono scomparsi gli errori ma l'immagine continua a non uscire...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
verifica che non sia un problema di percorsi
prova a mettere un var_dump e guarda cosa ti restituisce
PHP:
//....
$row = mysql_fetch_assoc($ricevuta);
//poi il var_dump lo togli
var_dump($row['immagine']);
echo 'La tua foto: ', '<img src="'.$row['immagine'].'"/ height="300" weidth="100 alt="immagine"">'; 
//....

p.s.
soprattutto quando fai le prove togli i silent, altrimenti non vedi gli errori
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
M Leggere il contenuto di una cartella e memorizzare il nome file in mysql PHP 1
V [PHP] Memorizzare scelte select in db e leggerle PHP 6
P Problema: come memorizzare il contenuto visualizzato di un dvd PHP 6
1 Memorizzare il valore di una checkbox e stamparlo su un'altra pagina! Javascript 4
S memorizzare elemento jQuery 1
S php memorizzare l indirizzo ip quando uno si registra PHP 4
P Problema: come far leggere unintero dvd da php e memorizzare il suo contenuto ???? PHP 38
C Meglio memorizzare alcuni parametri in $_SESSION o fare richieste al database? PHP 6
D AJAX - Si possono memorizzare i risultati delle richieste in una qualche cache? Javascript 8
S Memorizzare nome file allegato da form registrazione PHP 1
zighy memorizzare gli elementi di un drag n drop Javascript 4
P Come memorizzare le immaggino con selezione multipla PHP 2
neo996sps Tutorial sito multilingua: come memorizzare e riutilizzare selezione tramite cookie PHP 2
F Memorizzare valore variabile da una funzione javascript Javascript 10
A Memorizzare valori di più select PHP 1
R Progettare BDD per memorizzare schemi relazionali Database 0
I [javascript] memorizzare selezioni di un campo select di un modulo Javascript 1
X Memorizzare i dati se c'è un errore PHP 2
purno Non memorizzare sul pc una pagina web: HTML e CSS 0
F Aiuto! cambio immagine di sfondo al cambio pagina HTML e CSS 2
gara1 inserire immagine di sfondo in canvas Javascript 0
T Dividere un'immagine in 3 parti orizzontali e salvarle separatamente Photoshop 2
W Immagine come maschera photoshop Photoshop 1
L Ultima immagine Windows e Software 0
A Immagine decentrata con sfondo trasparente Photoshop 0
A Scontornare immagine di bassa qualità. Photoshop 2
B Selezionare un'immagine e salvare la selezione Photoshop 3
F Immagine come fosse selezione attiva Photoshop 1
Y Percorso assoluto file immagine HTML e CSS 9
K Come posso usare un'immagine al posto di un bottone? HTML e CSS 2
M Upload immagine con javascript problemi con FormData() Javascript 1
M Visulizzare immagine con php PHP 8
Stex1967 Salvare una immagine che si trova su porta TCP 8080 di altro sito PHP 7
L Come caricare un'immagine in Canvas dinamicamente Javascript 0
R Cambiare il nome dell'immagine dopo caricamento ftp HTML e CSS 0
L salvare una immagine elaborata in canvas Javascript 1
L salvare una immagine elaborata in canvas Javascript 1
Y Come caricare e visualizzare un'immagine PHP 0
S Testo scrolla su immagine che cambia HTML e CSS 0
M Quando ha l'immagine ingrandita è possibile fare rotazione per ritagliare? Photoshop 0
R Caricamento immagine su cartella remota + mysql PHP 3
R Non riesco a rinnovare l'immagine di sfondo PHP 1
R Non riesco a cambiare l'immagine di sfondo PHP 4
L Upload di un'immagine all'interno di un database usando php PHP 6
G Modifica immagine di sfondo attraverso un bottone PHP 18
F photoshop portable : spostamento immagine Photoshop 0
A Server Apache immagine not found (ERROR 404) Apache 5
P [Photoshop] ritagliare una immagine Photoshop 1
S [PHP] Recupero nome immagine da Form con input file PHP 3

Discussioni simili