• Home
  • Forum
  • Fare Web
  • PHP

Memorizzare un'immagine in db mysql

  • Creatore Discussione Creatore Discussione vodka
  • Data di inizio Data di inizio 24 Dic 2010
  • 1
  • 2
  • 3
  • 4
Succ.
1 di 4 Succ. Ultimo
V

vodka

Utente Attivo
25 Giu 2010
128
0
0
  • 24 Dic 2010
  • #1
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
  • 27 Dic 2010
  • #2
togli tutte quelle @, altrimenti non riesci a vedere gli errori
 
V

vodka

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

vodka

Utente Attivo
25 Giu 2010
128
0
0
  • 29 Dic 2010
  • #4
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
27
Roma
alessandro1997.netsons.org
  • 29 Dic 2010
  • #5
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.
 
V

vodka

Utente Attivo
25 Giu 2010
128
0
0
  • 29 Dic 2010
  • #6
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
27
Roma
alessandro1997.netsons.org
  • 29 Dic 2010
  • #7
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.
 
V

vodka

Utente Attivo
25 Giu 2010
128
0
0
  • 29 Dic 2010
  • #8
ho fatto come mi hai suggerito e mi dice HTTP 404 pagina non trovata
 
V

vodka

Utente Attivo
25 Giu 2010
128
0
0
  • 29 Dic 2010
  • #9
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
27
Roma
alessandro1997.netsons.org
  • 29 Dic 2010
  • #10
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.
 
V

vodka

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

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 30 Dic 2010
  • #12
Prova invece, nell'altro file, ad aggiungere questo:
PHP:
var_dump($_GET['id_foto']);
Prima di questa riga:
PHP:
if(isset($_GET['id_foto']))
Che cosa viene visualizzato?
 
V

vodka

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

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 30 Dic 2010
  • #14
Temo che tu abbia modificato il file sbagliato. Potresti postare l'attuale contenuto dei due file?
 
V

vodka

Utente Attivo
25 Giu 2010
128
0
0
  • 31 Dic 2010
  • #15
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.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 2 Gen 2011
  • #16
Ma se provi a modificare la riga così?
PHP:
echo "La tua foto: <img src=\"{$row['immagine']}\" height=\"300\" width=\"100\" alt=\"immagine\" />";
 
V

vodka

Utente Attivo
25 Giu 2010
128
0
0
  • 3 Gen 2011
  • #17
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.044
150
63
PR
www.borgo-italia.it
  • 3 Gen 2011
  • #18
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
 
V

vodka

Utente Attivo
25 Giu 2010
128
0
0
  • 3 Gen 2011
  • #19
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.044
150
63
PR
www.borgo-italia.it
  • 3 Gen 2011
  • #20
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
 
  • 1
  • 2
  • 3
  • 4
Succ.
1 di 4 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

M
Memorizzare i dati nei campi prima dell'invio al db
  • Max61
  • 13 Feb 2022
  • PHP
Risposte
4
Visite
1K
PHP 14 Feb 2022
Max61
M
M
Leggere il contenuto di una cartella e memorizzare il nome file in mysql
  • Marco Candian
  • 18 Lug 2018
  • PHP
Risposte
1
Visite
2K
PHP 19 Lug 2018
macus_adi
V
[PHP] Memorizzare scelte select in db e leggerle
  • VAik
  • 22 Set 2016
  • PHP
Risposte
6
Visite
2K
PHP 23 Set 2016
VAik
V
P
Problema: come memorizzare il contenuto visualizzato di un dvd
  • paperinik4
  • 12 Ago 2015
  • PHP
Risposte
6
Visite
1K
PHP 28 Ago 2015
paperinik4
P
1
Memorizzare il valore di una checkbox e stamparlo su un'altra pagina!
  • 1Max1
  • 24 Nov 2014
  • Javascript
Risposte
4
Visite
2K
Javascript 26 Nov 2014
otto9due
S
memorizzare elemento
  • Selyn
  • 20 Nov 2014
  • jQuery
Risposte
1
Visite
1K
jQuery 20 Nov 2014
criric
S
php memorizzare l indirizzo ip quando uno si registra
  • sbuzza
  • 21 Nov 2013
  • PHP
Risposte
4
Visite
2K
PHP 21 Nov 2013
sbuzza
S
P
Problema: come far leggere unintero dvd da php e memorizzare il suo contenuto ????
  • paperinik4
  • 3 Nov 2013
  • PHP
  • 2
Risposte
38
Visite
4K
PHP 12 Nov 2013
paperinik4
P
C
Meglio memorizzare alcuni parametri in $_SESSION o fare richieste al database?
  • Cirox
  • 24 Giu 2013
  • PHP
Risposte
6
Visite
2K
PHP 25 Giu 2013
Salvo Salvi
S
D
AJAX - Si possono memorizzare i risultati delle richieste in una qualche cache?
  • Donovant
  • 20 Ott 2012
  • Javascript
Risposte
8
Visite
3K
Javascript 5 Nov 2012
Donovant
D
S
Memorizzare nome file allegato da form registrazione
  • simonedig
  • 5 Giu 2012
  • PHP
Risposte
1
Visite
2K
PHP 6 Giu 2012
borgo italia
memorizzare gli elementi di un drag n drop
  • zighy
  • 24 Gen 2012
  • Javascript
Risposte
4
Visite
2K
Javascript 26 Gen 2012
max_400
P
Come memorizzare le immaggino con selezione multipla
  • paperinik4
  • 17 Dic 2011
  • PHP
Risposte
2
Visite
2K
PHP 18 Dic 2011
paperinik4
P
Tutorial sito multilingua: come memorizzare e riutilizzare selezione tramite cookie
  • neo996sps
  • 12 Apr 2011
  • PHP
Risposte
2
Visite
3K
PHP 13 Apr 2011
neo996sps
F
Memorizzare valore variabile da una funzione javascript
  • F4BiO_GE
  • 17 Ago 2010
  • Javascript
Risposte
10
Visite
9K
Javascript 22 Ago 2010
F4BiO_GE
F
A
Memorizzare valori di più select
  • adfadf
  • 2 Mag 2009
  • PHP
Risposte
1
Visite
1K
PHP 4 Mag 2009
adfadf
A
R
Progettare BDD per memorizzare schemi relazionali
  • raowyr
  • 22 Mag 2008
  • Database
Risposte
0
Visite
2K
Database 22 Mag 2008
raowyr
R
I
[javascript] memorizzare selezioni di un campo select di un modulo
  • isidoro80
  • 9 Mag 2007
  • Javascript
Risposte
1
Visite
2K
Javascript 11 Mag 2007
metalgemini
X
Memorizzare i dati se c'è un errore
  • xmaxfane
  • 29 Set 2005
  • PHP
Risposte
2
Visite
1K
PHP 30 Set 2005
xmaxfane
X
Non memorizzare sul pc una pagina web:
  • purno
  • 21 Set 2005
  • HTML e CSS
Risposte
0
Visite
1K
HTML e CSS 21 Set 2005
purno
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?