Problema: salvare indirizzo file in un database(mancanza delle backslash nel percorso)

c02y

Utente Attivo
30 Nov 2012
30
0
0
Ho una form per l'upload delle immagini in una cartella. Voglio salvare in un database il percorso del file. Il problema è che nel database mi salva il percorso del file, ma senza l'uso delle backslash, così facendo quando tendo di aprire le immagini tramite un tag <img src="percorso file">, non le riesco a visualizzare. Quando vado a controllare il database con phpmyadmin, il percorso del file(salvato in un campo di una tabella) risulta essere privo delle backslash.

ecco lo script per l'upload:

PHP:
//file passati tramite form
		$_FILES["img"]["tmp_name"]; //l'immagine 
		@$tipo_img=$_POST["tipo"];	//il tipo di immagine selezionato tramite radio button
		$nome_img=$_POST["nome_img"];	//nome dell'immagine da inserire nel db passata tramite input=text
		$color_img=$_POST["color_img"];	//colore dell'immagine da inserire nel db passata tramite input=text
	
	
	//connessione al database

		$connessione=
						mysql_connect('localhost','root','') or die("connessione fallita");
						mysql_select_db('vestiti') or die ("Selezione Database Fallita");
		
		
		
		//Se il caricamento non va a buon fine, stampami l'errore
			if ($_FILES["img"] ["error"] >0) 
			
				{
				echo" Errore nell'upload" . $_FILES["img"] ["error"]  ."<br>";
				}
			
			else
			
				{
				echo "Upload ok","<br>";
				
				echo "Il nome dl file caricato è" .$_FILES["img"] ["name"] ."<br>";
				
				echo" " .$_FILES["img"] ["tmp_name"];
				
				}
	//Nella funzione move_uploaded_file come secondo parametro va messa la seguente variabile, contenente indirizzo e nome del file
			$pathAndName ="C:\\upload\\{$_FILES['img']['name']}"; 
			
	//Se lo spostamento va a buon fine, inserisco indirizzo e altre info del file all'interno del database
			if (move_uploaded_file($_FILES['img']['tmp_name'], $pathAndName))
			
				{
					$query=mysql_query("INSERT INTO  $tipo_img SET indirizzo='$pathAndName',nome='$nome_img',colore='$color_img'") or die ("Errore query");
				}
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao, prova a fare così:

PHP:
 <?php
  
   $_FILES["img"]["tmp_name"]; 
   @$tipo_img=$_POST["tipo"];    
   $nome_img=$_POST["nome_img"];  
   $color_img=$_POST["color_img"]; 
   $connessione=
   mysql_connect('localhost','root','') or die("connessione fallita");
   mysql_select_db('vestiti') or die ("Selezione Database Fallita");
   
   if ($_FILES["img"] ["error"] >0) {
	   echo" Errore nell'upload" . $_FILES["img"] ["error"]  ."<br>";
	  }else{
	   echo "Upload ok","<br>";
	   echo "Il nome dl file caricato è".$_FILES["img"] ["name"] ."<br>";
	   echo" " .$_FILES["img"] ["tmp_name"];
    }
    
	$percorso = './';
	$pathAndName = ''.$percorso.basename( $_FILES['img']['name'] );
	  
   if (move_uploaded_file($_FILES['img']['tmp_name'], $pathAndName)){
	   $query=mysql_query("INSERT INTO $tipo_img 
	   SET indirizzo='$pathAndName',nome='$nome_img',colore='$color_img'") 
	   or die ("Errore query");
   } 

?>
 
Ultima modifica:

c02y

Utente Attivo
30 Nov 2012
30
0
0
Ciao, prova a fare così:

PHP:
 <?php
  
   $_FILES["img"]["tmp_name"]; 
   @$tipo_img=$_POST["tipo"];    
   $nome_img=$_POST["nome_img"];  
   $color_img=$_POST["color_img"]; 
   $connessione=
   mysql_connect('localhost','root','') or die("connessione fallita");
   mysql_select_db('vestiti') or die ("Selezione Database Fallita");
   
   if ($_FILES["img"] ["error"] >0) {
	   echo" Errore nell'upload" . $_FILES["img"] ["error"]  ."<br>";
	  }else{
	   echo "Upload ok","<br>";
	   echo "Il nome dl file caricato è".$_FILES["img"] ["name"] ."<br>";
	   echo" " .$_FILES["img"] ["tmp_name"];
    }
    
	$percorso = './';
	$pathAndName = ''.$percorso.basename( $_FILES['img']['name'] );
	  
   if (move_uploaded_file($_FILES['img']['tmp_name'], $pathAndName)){
	   $query=mysql_query("INSERT INTO $tipo_img 
	   SET indirizzo='$pathAndName',nome='$nome_img',colore='$color_img'") 
	   or die ("Errore query");
   } 

?>

In $percorso devo mettere c:\\upload giusto??(ho provato anche senza :p) e basename cos'è? :D

Comunque mi da errore:(
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao, no percorso lascialo così.
Che errore ti da?
La funzione basename restituisce il nome del file il cui percorso viene passato in argomento alla funzione.
 
Ultima modifica:

c02y

Utente Attivo
30 Nov 2012
30
0
0
Il file viene caricato in temp, ma non viene spostato. Ecco cosa mi da:


Upload ok
Il nome dl file caricato è169599_439390212749942_2106478344_o.jpg
C:\xampp\tmp\php2DFD.tmp
Notice: Undefined variable: FILES in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 42

Warning: move_uploaded_file(): The second argument to copy() function cannot be a directory in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 45

Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\php2DFD.tmp' to './' in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 45
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ciao, prova così :

PHP:
<?php
  
   $_FILES["img"]["tmp_name"]; 
   $tipo_img=$_POST["tipo"];    
   $nome_img=$_POST["nome_img"];  
   $color_img=$_POST["color_img"]; 
   $connessione=
   mysql_connect('localhost','root','') or die("connessione fallita");
   mysql_select_db('vestiti') or die ("Selezione Database Fallita");
   
   $percorso = './'; // BackSlash per il percorso.
   // Upload immagine.  
   $uploadfile = ''.$percorso.basename( $_FILES['Filedata']['name'] );
   // Sposta immagine.
   $sposta=move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );
   // Percorso corretto immagine attraverso il concatenamento.
   $pathAndName=$percorso.$nome_img.$tipo_img;
   // Logica condizionale per spostare l'immagine ed eventualmente 
   // Rinominarla in casoil nome sia lo stesso.
  if($sposta){
   if (file_exists($pathAndName)){
     unlink($pathAndName);}
     $nuovofile=''.$percorso.$_FILES['Filedata']['name'];
     rename($nuovofile,$pathAndName);
     // Tua query di insert.
     $query=mysql_query("INSERT INTO $tipo_img 
     SET indirizzo='$pathAndName',nome='$nome_img',colore='$color_img'") 
     or die ("Errore query");
   }else{
     echo"errore Upload";
 }
 
?>
 
Ultima modifica:

c02y

Utente Attivo
30 Nov 2012
30
0
0
Ciao, prova così :

PHP:
<?php
  
   $_FILES["img"]["tmp_name"]; 
   $tipo_img=$_POST["tipo"];    
   $nome_img=$_POST["nome_img"];  
   $color_img=$_POST["color_img"]; 
   $connessione=
   mysql_connect('localhost','root','') or die("connessione fallita");
   mysql_select_db('vestiti') or die ("Selezione Database Fallita");
   
   $percorso = './'; // BackSlash per il percorso.
   // Upload immagine.  
   $uploadfile = ''.$percorso.basename( $_FILES['Filedata']['name'] );
   // Sposta immagine.
   $sposta=move_uploaded_file( $_FILES['Filedata']['tmp_name'] ,$uploadfile );
   // Percorso corretto immagine attraverso il concatenamento.
   $pathAndName=$percorso.$nome_img.$tipo_img;
   // Logica condizionale per spostare l'immagine ed eventualmente 
   // Rinominarla in casoil nome sia lo stesso.
  if($sposta){
   if (file_exists($pathAndName)){
     unlink($pathAndName);}
     $nuovofile=''.$percorso.$_FILES['Filedata']['name'];
     rename($nuovofile,$pathAndName);
     // Tua query di insert.
     $query=mysql_query("INSERT INTO $tipo_img 
     SET indirizzo='$pathAndName',nome='$nome_img',colore='$color_img'") 
     or die ("Errore query");
   }else{
     echo"errore Upload";
 }
 
?>

Non ne riesco proprio ad uscire....da ancora errore

Notice: Undefined index: Filedata in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 25

Notice: Undefined index: Filedata in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 27
errore Upload
 

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Ma la foto deve andare in qualche directory?
se la foto ha una directory sostituisci il percorso con
$percorso = './TUA CARTELLA';
Inoltre nella riga 25 c'è un commento e nella 27 c'è la query di insert
hai costruito bene la query di insert?
Inoltre il form dove passi i dati nome etc funziona?
 
Ultima modifica:

c02y

Utente Attivo
30 Nov 2012
30
0
0
Ma la foto deve andare in qualche directory?
se la foto ha una directory sostituisci il percorso con
$percorso = './TUA CARTELLA';
Inoltre nella riga 25 c'è un commento e nella 27 c'è la query di insert
hai costruito bene la query di insert?
Inoltre il form dove passi i dati nome etc funziona?


La foto deve andare in una directory (C:\\upload\\)

Il form funziona, infatti come ho detto nell'open post, le informazioni vengono salvate, l'unico problema è che il percorso risulta essere senza backslash, e così facendo non posso richiamarle nei tag <img>. Ma la form e l'upload funzionano...è che salva il percorso in questo modo"C:esempioesempio" invece di questo: C//:esempio/esempio

Ti faccio vedere la form:
PHP:
<form name=mod_inserimento method=post enctype='multipart/form-data'  action=upload_file.php onSubmit='return verifica()'>
		
			<table>	
						<tr> <td>	<p>Maglia		<td>	<input type=radio name=tipo	value=maglia> 		</tr>
						<tr> <td>	<p>Pantalone	<td>	<input type=radio name=tipo	value=pantalone>	</tr>
						<tr> <td>	<p>Accessorio	<td>	<input type=radio name=tipo	value=accessorio>	</tr>
						<tr> <td>	<p>Inserici un nome:													</tr>
				
						<tr> <td>	<p>Nome			<td>	<input type=name name=nome_img>					</tr>
						<tr> <td>	<p>Colore		<td>	<input type=text name=color_img>				</tr>
						<tr> 	<p>	<input type=file name=img>											</tr>
							<p>				<td>	<input type=submit value=Procedi>	<td>	<input type=reset value=Annulla>  
					</table>"
L'upload_file è quello che sta nell'open post
 
Ultima modifica:

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Prova cosi':
PHP:
 <?php
  
   $_FILES["img"]["tmp_name"]; 
   @$tipo_img=$_POST["tipo"];    
   $nome_img=$_POST["nome_img"];  
   $color_img=$_POST["color_img"]; 
   $connessione=
   mysql_connect('localhost','root','') or die("connessione fallita");
   mysql_select_db('vestiti') or die ("Selezione Database Fallita");
   
   if ($_FILES["img"] ["error"] >0) {
       echo" Errore nell'upload" . $_FILES["img"] ["error"]  ."<br>";
      }else{
       echo "Upload ok","<br>";
       echo "Il nome dl file caricato è".$_FILES["img"] ["name"] ."<br>";
       echo" " .$_FILES["img"] ["tmp_name"];
    }
    
    $percorso = './upload'; // indica il percorso
    $pathAndName =''.$percorso{$_FILES['img']['name']}; 
   
   if (move_uploaded_file($_FILES['img']['tmp_name'], $pathAndName)){
       $query=mysql_query("INSERT INTO $tipo_img 
       SET indirizzo='$pathAndName',nome='$nome_img',colore='$color_img'") 
       or die ("Errore query");
   } 

?>
 

c02y

Utente Attivo
30 Nov 2012
30
0
0
Prova cosi':
PHP:
 <?php
  
   $_FILES["img"]["tmp_name"]; 
   @$tipo_img=$_POST["tipo"];    
   $nome_img=$_POST["nome_img"];  
   $color_img=$_POST["color_img"]; 
   $connessione=
   mysql_connect('localhost','root','') or die("connessione fallita");
   mysql_select_db('vestiti') or die ("Selezione Database Fallita");
   
   if ($_FILES["img"] ["error"] >0) {
       echo" Errore nell'upload" . $_FILES["img"] ["error"]  ."<br>";
      }else{
       echo "Upload ok","<br>";
       echo "Il nome dl file caricato è".$_FILES["img"] ["name"] ."<br>";
       echo" " .$_FILES["img"] ["tmp_name"];
    }
    
    $percorso = './upload'; // indica il percorso
    $pathAndName =''.$percorso{$_FILES['img']['name']}; 
   
   if (move_uploaded_file($_FILES['img']['tmp_name'], $pathAndName)){
       $query=mysql_query("INSERT INTO $tipo_img 
       SET indirizzo='$pathAndName',nome='$nome_img',colore='$color_img'") 
       or die ("Errore query");
   } 

?>


Penso che cercherò uno script bello e fatto...non va nemmeno così
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ho sistemato un po lo script, comunque non capisco il senso nell'avere più tabelle con la stessa struttura ma nome diverso, cioè tanto vale farne una unica aggiungendo un campo di nome tipo

PHP:
 if(!empty($_POST["tipo"]) && !empty($_POST["nome_img"]) && !empty($_POST["color_img"]) && !empty($_FILES['img'])){
      $mysqli = new mysqli('localhost','root','','vestiti') or die("Impossibile connettersi al database");
    
   if ($_FILES["img"]["error"]>0)  
       echo " Errore nell'upload" . $_FILES["img"] ["error"]  ."<br>"; 
     elseif(!in_array(end(explode('.',$_FILES["img"]["name"])),array('jpg','jpeg','gif','png')))
         echo "Estensione invalida";
      else{ 
       echo "Upload ok","<br>"; 
       echo "Il nome dl file caricato è".$_FILES["img"] ["name"] ."<br>"; 
       echo" " .$_FILES["img"]["tmp_name"]; 
    } 
     
    $percorso = './upload/'; // indica il percorso 
    $pathAndName = $percorso.$_FILES['img']['name'];  
    
   if (move_uploaded_file($_FILES['img']['tmp_name'], $pathAndName)){ 
       $mysqli->query("INSERT INTO ".$mysqli->real_escape_string($_POST['tipo'])."
       SET indirizzo='".$mysqli->real_escape_string($pathAndName)."',nome='".$mysqli->real_escape_string($_POST['nome_img'])."',colore='".$mysqli->real_escape_string($_POST['color_img'])."'")  
       or die ($mysqli->error); 
   } else echo "Errore imprevisto nell'upload";
   
}else echo "Tutti i campi devono essere compilati";

Se riscontri degli errori scrivi quali e fino a dove arriva lo script
 

c02y

Utente Attivo
30 Nov 2012
30
0
0
Ho sistemato un po lo script, comunque non capisco il senso nell'avere più tabelle con la stessa struttura ma nome diverso, cioè tanto vale farne una unica aggiungendo un campo di nome tipo

PHP:
 if(!empty($_POST["tipo"]) && !empty($_POST["nome_img"]) && !empty($_POST["color_img"]) && !empty($_FILES['img'])){
      $mysqli = new mysqli('localhost','root','','vestiti') or die("Impossibile connettersi al database");
    
   if ($_FILES["img"]["error"]>0)  
       echo " Errore nell'upload" . $_FILES["img"] ["error"]  ."<br>"; 
     elseif(!in_array(end(explode('.',$_FILES["img"]["name"])),array('jpg','jpeg','gif','png')))
         echo "Estensione invalida";
      else{ 
       echo "Upload ok","<br>"; 
       echo "Il nome dl file caricato è".$_FILES["img"] ["name"] ."<br>"; 
       echo" " .$_FILES["img"]["tmp_name"]; 
    } 
     
    $percorso = './upload/'; // indica il percorso 
    $pathAndName = $percorso.$_FILES['img']['name'];  
    
   if (move_uploaded_file($_FILES['img']['tmp_name'], $pathAndName)){ 
       $mysqli->query("INSERT INTO ".$mysqli->real_escape_string($_POST['tipo'])."
       SET indirizzo='".$mysqli->real_escape_string($pathAndName)."',nome='".$mysqli->real_escape_string($_POST['nome_img'])."',colore='".$mysqli->real_escape_string($_POST['color_img'])."'")  
       or die ($mysqli->error); 
   } else echo "Errore imprevisto nell'upload";
   
}else echo "Tutti i campi devono essere compilati";

Se riscontri degli errori scrivi quali e fino a dove arriva lo script

In realtà non avevo proprio pensato di mettere tutto in un'unica tabella...hai ragione!

comunque...ho preso il codice e l'ho sostituito al mio, ed ecco il risultato:
Strict Standards: Only variables should be passed by reference in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 13
Upload ok
Il nome dl file caricato è188648_470592122982708_1254301220_n.jpg
C:\xampp\tmp\php1B89.tmp
Warning: move_uploaded_file(./upload/188648_470592122982708_1254301220_n.jpg): failed to open stream: No such file or directory in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 24

Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\php1B89.tmp' to './upload/188648_470592122982708_1254301220_n.jpg' in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 24
Errore imprevisto nell'upload

Vi posto gli altri due file...che non mi fanno aprire le foto...il codice di entrambi non è fatto benissimo(potrei trovare soluzioni più rapide) ma è fatto di corsa giusto per provare se riesco a visualizzare le foto.

1) Visualizza il nome dei file contenuti nelle tabelle(quando funzionerà tutto metterò tutto in un'unica tabella)
PHP:
//Connessione al database
		$connesione=
					mysql_connect('localhost','root','') or die ("Connessione Fallita");
					
					mysql_select_db('vestiti') or die ("Selezione database Fallita");
		
		//Query per ottenere l'elenco dei file
					$query= "SELECT * FROM maglia";
					$risultato=mysql_query($query);
		
		//Controlo presenza file, e stampa del risultato
					if(mysql_num_rows($risultato))
					
					while	($tmp = mysql_fetch_array($risultato))
							{
								echo "<p><a href=\"open.php?id=$tmp[id]\">$tmp[nome]</a></p>\n";
							
							}
					else
							{
								echo "<p>Nessun file presente nel database</p>";
							}

2) cliccando sul nome del file dovrebbe aprire la foto

PHP:
//Connessione al database
		$connesione=
					mysql_connect('localhost','root','') or die ("Connessione Fallita");
					
					mysql_select_db('vestiti') or die ("Selezione database Fallita");
		
		//Query per ottenere l'elenco dei file
					$query= "SELECT * FROM maglia";
					$risultato=mysql_query($query);
		
		//Controlo presenza file, e stampa del risultato
					if(mysql_num_rows($risultato))
					
					while	($tmp = mysql_fetch_array($risultato))
							{
								echo "<p><a href=\"open.php?id=$tmp[id]\">$tmp[nome]</a></p>\n";
							
							}
					else
							{
								echo "<p>Nessun file presente nel database</p>";
							}

Attualmente mi fa vedere i file contenuti, ma quando clicco per aprire l'immagine esce un'icona piccolissima di un'immagine con l'angolo in basso a destra tagliato
 
Ultima modifica:

c02y

Utente Attivo
30 Nov 2012
30
0
0
Ragazzi penso di aver risolto!

Nel file upload_file.php ho fatto così:
PHP:
//Nella funzione move_uploaded_file come secondo parametro va messa la seguente variabile, contenente indirizzo e nome del file
			
			$pathAndName ="{$_FILES['img']['name']}";

Ho tolto il percorso(C:\\etc...)

Mentre nel file open.php all'ultima riga di codice ho fatto così:

PHP:
echo "<img src=",$img["indirizzo"],">";

l'immagine ora me la fa vedere
 
Discussioni simili
Autore Titolo Forum Risposte Data
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1

Discussioni simili