Stampare variabile da una funzione

drummelo

Nuovo Utente
28 Ott 2013
2
0
0
Ciao a tutti. Mi sto cimentando nel costruire una funzione per fare l'upload di un immagine, e funziona benissimo per come volevo che funzionasse.
L'unico problema è che una volta fatto l'upload non riesco a stampare, fuori dalla funzione, il nome dell'immagine uploadata.
Per eseguire la funzione, mi servono l'immagine postata (il nome del campo invio dati), la cartella di destinazione, un indice per indicare quale immagine è, un eventuale vecchia immagine già presente nel database (cosi posso sfruttarla sia quando inserisco un nuovo articolo sia quando lo modifico).
Vi posto il codice cosi è più chiaro:

PHP:
function img($img_postata,$cartella,$i,$img_vecchia){

			//  FOTO1  //////////////////////////////////////////////////////
			if (is_uploaded_file($_FILES[$img_postata]['tmp_name'])) {

				//controlliamo che il file rispetti le dimensioni impostate
					if ($_FILES[$img_postata]["size"] < 2042000){
						//controlliamo se ci sono stati errori durante l'upload
						if ($_FILES[$img_postata]["error"] > 0){
							echo "Codice Errore: " . $_FILES[$img_postata]["error"];
						}else{
		
							//stampo alcune informazioni sul file
							
							//tipo di file
							$tipo = $_FILES[$img_postata]["type"];
							
							//controllo estensione consentita
							if(($tipo !== 'image/jpeg') && ($tipo !== 'image/jpg') && ($tipo !== 'image/gif') && ($tipo !== 'image/bmp') && ($tipo !== 'image/png')){
								die("Estensione del file non consentita.<br /><br />Utilizzare un\'immagine con estensione <b>jpg</b>, <b>jpeg</b>, <b>gif</b>, <b>png</b>, <b>bmp</b>.");
							}
							
							// Tolgo gli spazi, i trattini e i trattini bassi
							$_FILES[$img_postata]["name"] = str_replace(" ", "", $_FILES[$img_postata]["name"]);
							$_FILES[$img_postata]["name"] = str_replace("-", "", $_FILES[$img_postata]["name"]);
							$_FILES[$img_postata]["name"] = str_replace("_", "", $_FILES[$img_postata]["name"]);
							
							//sposto il file caricato dalla cartella temporanea alla destinazione finale
							$random1 = rand(1,10000);
							move_uploaded_file($_FILES[$img_postata]["tmp_name"], $cartella . $random1 . $_FILES[$img_postata]["name"]);
			
						}
					}else{
						die ("Dimensione foto maggiore di quella consentita.");
					}
		
				$foto[$i] = $random1 . strtolower($_FILES[$img_postata]["name"]);
			
				// Se è stata postata l'immagine vecchia, controllo se è uguale o diversa alla nuova	
				if($img_vecchia != 'n'){
					// Se la nuova è diversa dalla vecchia Cancellazione foto old
					if($img_vecchia !== $foto[$i] && file_exists($cartella . $img_vecchia)){
						unlink($cartella . $img_vecchia);
					}else{ // oppure resta uguale alla vecchia
						$foto[$i] = $img_vecchia;
					}
				}// fine if isset img vecchia
				
				echo '<h3>Upload effettuato. Nome immagine: ' . $foto[$i] . '</h3>';
				
				return $foto[$i];
				
				
				
			}// fine if uploaded file
			///////////////////////////////////////////////////////////////////////////////////////////////////////////

} // fine function img

Quello che voglio fare è semplicemente questo:
echo $foto[$i];

Provo a fare echo $foto[0], considerato che non ci sono altri file nell'array e quindi il primo indice è zero, ma niente!

Ma non me lo stampa! Non c'è potenza! L'immagine me la mette correttamente nella cartella, con il nome corretto e non mi da il minimo errore, solo che non riesco a stampare il nome della foto. Questo mi serve per inserirlo nel database in maniera che poi va a cercare l'immagine da sola.

Mi potete aiutare? C'è sicuramente qualcosa che mi sfugge....
 
Ho risolto.

Prima di
$foto[$i] = $random1 . strtolower($_FILES[$img_postata]["name"]);

ho semplicemente messo
global $foto;

e funziona tutto, anche se dopo vado a effettuare altre uguali funzioni per altri campi di upload.

:)
 

Discussioni simili