Memorizzare un'immagine in db mysql

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusate, ma ho riletto tutti i post e c'è qualcosa che non mi torna
inizialmente parlate di header per visualizzare le immagini e, se non erro, utilizzate per visualizzarla
echo $row['immagine'];
poi nel prosequio utilizzate
....<img src="'.$row['immagine']......
nel primo caso si "dovrebbe" visualizzare l'immagine se l'immagine (i bit) sono contenuti nel relativo campo (ma non vedo un campo di tipo blob),
nel secondo ci dovrebbe essere l'eventuale percorso e nome del file immagine (infatti vedo solo campi tipo varchar)
ma puo darsi che le ultime libagioni mi abbiano offuscato:cool:
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
faccio un pò di chiarezza e posto un pò tutto il codice ke ho a disposizione... l'immagine viene salvata non in un campo blob ma in un campo text dove salvo il suo percorso..(non sò se l'ho salavato correttamente il percorso)

qui io spedisco i dati x la memorizzazione dei dati:
PHP:
<?php
	$emaildestinatario=$_POST['email'];
	if ($_POST['nome']!="" && $_POST['cognome']!="" && $_POST['email']!="")
	{
		if (@!ereg("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $emaildestinatario)) 
		{
			echo "<script langage=\"Javascript\">window.alert('Questa $emaildestinatario non è una mail valida!');</script>";
			header ("Location: registrazione.php");
		}	
		else
		{
			echo "<script langage=\"Javascript\">window.alert('Registrazione avvenuta con successo!');</script>";
			include_once "E:\Program Files\EasyPHP-5.3.2i\apache\phpmailer\class.phpmailer.php"; 
			$Emailmessaggio = new PHPmailer(); 
			$Emailmessaggio->SetLanguage('it','language/');
			$Emailmessaggio->IsSMTP();  // send via SMTP 
			$Emailmessaggio->Host     = "smtp.tre.it";
			$Emailmessaggio->IsHTML(true);
			$Emailmessaggio->FromName= $_POST['nome']; 
			$Emailmessaggio->From='[email protected]'; 
			$Emailmessaggio->AddAddress($_POST['email']);
			$Emailmessaggio->Subject='Registrazione';
			$Emailmessaggio->Body=stripslashes('Registrazione effettuata con successo!');
			if(!$Emailmessaggio->Send()){ //errore di trasmissione
				echo $Emailmessaggio->ErrorInfo; }
		}
	}
	else
	{
		echo "<script langage=\"Javascript\">window.alert('Registrazione fallita Completare tutti i campi!');</script>";
		header ("Location: registrazione.php"); 
	}
?>
<FORM enctype="multipart/form-data" METHOD="POST" ACTION="memorizzazione.php">
<fieldset>
<legend>Iscrizione ad un esame</legend>
<TABLE>
<BR>
<TR>
	<TD>Nome</TD><TD><INPUT TYPE="text" NAME="nome"></TD>
</TR>
<TR>
	<TD>Cognome</TD><TD><INPUT TYPE="text" NAME="cognome"></TD>
</TR>
<TR>
	<TD>Matricola</TD><TD><INPUT TYPE="text" NAME="matricola"></TD>
</TR>
<TR>
	<TD>Anno di iscrizione</TD><TD><INPUT TYPE="text" NAME="dataiscr"></TD>
</TR>
<TR>
	<TD><INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" value="1024000">
	<input type="file"  name="file_name" ></TD>
</TR>
<TR>
	<TD><INPUT TYPE="submit" value="Spedisci"></TD>
</TR>
</TABLE>
</fieldset>	
</FORM>

memorizzo i dati:
PHP:
<html>
	<head>
		<title>Memorizzazione del file sul server</title>
	</head>
	<FORM METHOD="POST" ACTION="visualizzadati.php" name="visualizzadati">
	<body>
	<?php

			$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 text not null , size text not null , type text not null, immagine text not null, PRIMARY KEY (`id_foto`))";
			
		mysql_query($stringa_c) or die (mysql_error());  

		@include 'upload.php';
		if (isset($_FILES['file_name']))
		{
		  upload();
		}

		mysql_close();
	
		//header ("Location: visualizzadati.php"); 

	if ($_POST['nome']!="" && $_POST['cognome']!="" && $_POST['matricola']!="" && $_POST['dataiscr']!="" )
	{
		$nome=trim($_POST['nome']);
		$cognome=trim($_POST['cognome']);
		$matricola=trim($_POST['matricola']);
		$dataiscr=trim($_POST['dataiscr']);

		$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!");

		$query= "INSERT INTO datiutente( nome, cognome, matricola, data_iscr) VALUES ('$nome', '$cognome', '$matricola', '$dataiscr')";
		mysql_query($query) or die (mysql_error()); 
		mysql_close($db);
		echo "<script langage=\"Javascript\">window.alert('Iscrizione avvenuta con successo, dati salvati!');</script>";

	}
	else
	{
		echo "<script langage=\"Javascript\">window.alert('Iscrizione fallita Completare tutti i campi!');</script>";
		header ("Location: iscrizione.php"); 
	}



	?><BR>
	</body>
	</FORM>
</html>

questa è la funzione upload:

PHP:
<?php
		function upload()
		{
		  $result = false;
		  $immagine = '';
		  $size = 0;
		  $type = '';
		  $nome = '';
		  $max_size = 300000;
		  $result = is_uploaded_file($_FILES['file_name']['tmp_name']);
		  if (!$result)
		  {
		
			echo "Impossibile eseguire l'upload.";
			return false;
		  }else{
			$size = $_FILES['file_name']['size'];
			if ($size > $max_size)
			{
			  echo "Il file è troppo grande.";
			  return false;
			}
			$type = $_FILES['file_name']['type'];
			$nome = $_FILES['file_name']['name'];
			$url="E:\Program Files\EasyPHP-5.3.2i\www" . "$_FILES['file_name']['name']";
			$immagine = $url;
			@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;
		  }
		}
?>

e con questo script dovrei visualizzare gli ultimi dati inseriti :

PHP:
<html>
	<head>
		<title>I tuoi dati</title>
	</head>
	<body>
		<div><H2>I DATI DA TE INSERITI:</H2><BR></div>
		<?php
				$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!");

				
				$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 '<B>Nome:</B> ', $row['nome'], "<BR>\r";
				echo '<B>Cognome:</B> ', $row['cognome'], "<BR>\r";
				echo '<B>Matricola:</B> ', $row['matricola'], "<BR>\n";
				echo '<B>Anno:</B> ', $row['data_iscr'], "<BR><BR>\n";
				
				
				$ricevuta = mysql_query("SELECT * FROM foto ORDER BY id_foto");

				$numero_record = mysql_num_rows($ricevuta);
				mysql_data_seek($ricevuta, $numero_record - 1);
				 
				$row = mysql_fetch_assoc($ricevuta);
				var_dump($row['immagine']);
				echo "<B>La tua foto:</B> <BR><BR> <img src=\"{$row['immagine']}\" height=\"300\" width=\"100\" alt=\"immagine\" />";
				
				mysql_close($db);

	?>
	</body>
</html>

un'altro problema è ke ora alla pagina memorizzazione.php mi visualizza una pagina bianca.
Ho fatto un pò di confusione..Grazie se riuscite ad aiutarmi.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho cominciato a dare un occhio e, secondo me ho wisto un errore dove usi l'url

nel file di upload

$url="E:\Program Files\EasyPHP-5.3.2i\www" . "$_FILES['file_name']['name']";
$immagine = $url;

dato che www è una cartella dovresti scrivere
$url="E:\Program Files\EasyPHP-5.3.2i\www\" . "$_FILES['file_name']['name']";

in questo modo nel campo 'immagine' ti ritrovi la stringa (es.)
"E:\Program Files\EasyPHP-5.3.2i\www\mia_immagine.jpg"
cioè il nome dell'immagine con il suo percorso

quindi quando la richiami con

echo "<B>La tua foto:</B> <BR><BR> <img src=\"{$row['immagine']}\" height=\"300\" width=\"100\" alt=\"immagine\" />";

non dovresti avere problemi in quanto $row['immagine'] contiene il nome dell'immagine con il suo percorso.

due osservazioni
1. perchè usi i percorsi assoluti? se poi carichi in remoto le pagine devi correggerli tutti
es.
se i file php sono nella root del sito (cartella www) e le immagini nella cartella immagini per l'url basta scrivere
$url="immagini/" . "$_FILES['file_name']['name']";

2. perchè ogni volta cerchi di creare la tabella del db, verificando che esista o no?
usualmente si fa una pagina apposita per creare tutte le tabelle necessarie e, una volta create le tabelle soprattutto in remoto, la pagina viene eliminata

prova a fare queste correzioni e poi sappimi dire
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
ho modifiicato il percorso ma ora alla pagina memorizzazione.php lo script si ferma e viene visualizzata una pagina bianca...può esserci un errore di invio dati dal dorm iscrizione.php?
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
la funzione upload non capisco xk ma nn veniva inclusa con @include 'upload.php', quindi ho incluso io direttamente il codice nel file ma al percorso dell'immagine mi dà errore:
$url = "E:\Program Files\EasyPHP-5.3.2i\www\" . "$_FILES['file_name']['name']";
Parse error: syntax error, unexpected T_VARIABLE in E:\Program Files\EasyPHP-5.3.2i\www\memorizzazione.php on line 72

anke mettendo il percorso relativo come mi hai suggerito mi dà errore.

Poi ho provato a forzare diciamo il percorso (scrivendolo direttamente io per intero es."E:\Program Files\EasyPHP-5.3.2i\www\mia_immagine.jpg") per provare se comunque poi l'immagine me la visuallizzava e invece i dati nel db li salva ma l'immagine poi non la visualizza comunque.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prima di tutto togli quella chiocciola (silent). non mi stancherò di dirlo ma (soprattutto in fase di prova) non vedi quali errori php ti restituisce
include 'upload.php';

poi, a parte il db; la foto viene caricata? anche se da quello che mi dici semprerebbe di sì
quale è la riga 72?
togli quelle virgolette
$url = "E:\Program Files\EasyPHP-5.3.2i\www\" . $_FILES['file_name']['name'];
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
mi dà errore nel modo in cui mi hai suggerito (Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in E:\Program Files\EasyPHP-5.3.2i\www\memorizzazione.php on line 72
) si la linea 72 sarebbe quella dell'url, se invece come ho detto prima forzo il percorso in modo ke lo scrivo io per testare se l'immagine la visualizza, quest'ultima viene caricata sul db ma nn visualizzata e mi compare sempre 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, dimenticavo
hai fatto il copia/incolla di brutto di tutto il codice?, guarda che quella è una funzione quindi se copi tutto il codice da function upload() { sino a } dove devi usare la funzione devi mettere

PHP:
//....
$quello_che_da_il_return=upload();
//....
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
a giusto ma il problema resta il percorso ke mi dà errore come ti ho postato prima
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
stavo riguardando più approfonditamente i vari script. toglimi una curiosità: "ma dove li hai pescati?"
oltre ad altre cose non vedo dove carichi le foto, la funzione upload() verifica che l'immagina sia stata caricata in una cartella temporanea (e sin li non ci piove), ma poi dovresti avere qualcosa del genere
PHP:
$tmp_name = $_FILES['file_name']['tmp_name'];
$name = $_FILES['file_name']['name'];//oppure dargli un altro nome
//e la cartella dove salvi la foto se diversa
move_uploaded_file($tmp_name, "$uploads_dir/$name");
il tutto senza contare che non c'è qualcosa che leghi l'utente alla sua foto. quello che stai facendo (cioè selezionare) usando ORDER BY id e ORDER BY id_foto va bene (forse) solo se TUTTI gli utenti inseriscono assieme ai loro dati una foto, ma se un utente non mette una foto o (per xy motivi) elimini un utente ti può accadere che i due id non collimino più

io ripartirei da zero (ma può darsi che sbagli)
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
ho cercato un pò sul web qlk script x visualizzare l'immagine dal db xk è ciò ke nn riuscivo a fare il resto è ciò ke ho scritto io
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ripartiamo da zero (cerco di capire cosa vuoi fare).
1. vuoi registrare degli utenti e ogni utente questo deve inserire
nome
cognome
numero di matricola (deve essere un valore unico?)
anno di iscrizione
una sua foto (solo una o più di una?)
2. l'utente visualizza i dati inseriti e se giusti li conferma
3. se confermati ti viene inviata una email con i dati e questi vengono registrati in un db
4. vuoi vedere (tu o l'utente) i dati inseriti

se sin qui è giusto fammi sapere.

p.s.
sarebbe opportuno che l'utente dovesse inserire anche il suo indirizzo email e una password (a meno che tu non voglia attribuire al numero di matricola la funzione di password)
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
diciamo ke è più o meno ciò ke hai detto tu ti spiego io meglio..

nella prima pagina inserisce nome cognome ed email per registrarsi (xkè altrimenti non può iscriversi) se la mail è giusta ed ha inseirto nome e cognome gli arriva una mail di conferma di registrazione e così può iscriversi immettendo nome cognome nr. di matricola (dell'università perckè sto simulando l'iscrizione all'università), anno di iscrizione e foto.

dopo aver inserito quindi i dati dell'iscrizione (nome cognome, nr. matricola, anno di nascita e foto) salva tutto ciò in un database e nella pagina successiva vengono riportati i dati inseiriti dall'utente compresa la visualizzazione della sua foto.


La foto da inserire deve essere una e la matricola deve essere semplicemente un numero.
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
Lasciando perdere tutto il funzionamento di questi script nel loro complesso, ciò ke mi interessa è estrarre un'immagine dal db.
Quindi vorrei sapere, avendo memorizzato il percorso del file nel db nel campo foto quindi ad es. C:\Users\Public\Pictures\Sample Pictures\io.jpg quali istruzioni devo scrivere per poter visualizzare questa immagine?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Devi fare una cosa del genere:
PHP:
<?php
// ti connetti al database
mysql_connect('localhost', 'root') or die(mysql_error());
mysql_select_db('database') or die(mysql_error());

// esegui la query SQL
$sql = 'SELECT foto FROM tabella';
$query = mysql_query($sql) or die(mysql_error());

// estrai i dati in $row
$row = mysql_fetch_assoc($query);

// visualizzi l'immagine
echo "<img src=\"{$row['foto']}\" />";
?>
Ovviamente devi aggiungere alla query una condizione WHERE in modo che estrapoli solamente una riga dal database. In questo modo visualizzerà l'immagine del primo record.
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
non mi visualizza l'immagine neanke così e nn mi dà nessun errore...mi visualizza solo un piccolo riquadro con un'immagine spezzata.
 

vodka

Utente Attivo
25 Giu 2010
128
0
0
si il percorso è esatto solo ke nn compaiono gli \ ad es. C:UserImmagini...
 
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