Estrarre il nome delle immagini dall'upload

Hackx

Utente Attivo
20 Ago 2013
108
0
16
Ciao a tutti :),

Allora questo è il mio codice html riguardante l'upload di 4 immagini distinte:

HTML:
<div class="form-group">
    <label for="immagine_2" class="col-sm-2 control-label">immagine 2</label>
    <div class="col-sm-10">
         <input type="File" name="immagine_2"> 
    </div>
  </div>
  <br/>  
  <div class="form-group">
    <label for="immagine_3" class="col-sm-2 control-label">immagine 3</label>
    <div class="col-sm-10">
         <input type="File" name="immagine_3"> 
    </div>
  </div>
  <br/>  
  <div class="form-group">
    <label for="immagine_4" class="col-sm-2 control-label">immagine 4</label>
    <div class="col-sm-10">
         <input type="File" name="immagine_4"> 
    </div>
 </div>

Per prelevare il nome dell'immagine ho usato $_FILES["file"]["name"].
Il problema è che nel database non mi scrive niente!
Avevo pensato di creare un array con tutti gli upload e poi estrarre i nome dalle diversi immagini .. ma purtroppo ho parecchia difficoltà nell'impostarlo.

Spero in una vostra spiegazione :)

(è da poco che ho iniziato a maneggiare le immagini con il PHP)

Vi ringrazio,
Andrea
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto servirebbe la parte php, poi non so se l'hai scritto solo come eesempio ma
$_FILES["file"]["name"]
dovrebbe essere
$_FILES["immagine_2"]["name"] ecc...
poi per usare un array devi modificare gli input file
es.
HTML:
<input type="File" name="immagine[]">
 

Hackx

Utente Attivo
20 Ago 2013
108
0
16
Ciao borgo italia :),

Grazie mille per avermi risposto !

Non so se è corretto nel codice PHP ho fatto così:

PHP:
//imposto la variabile con il nome dell'immagine
$nomeimage = $_FILES["immagine_1"]["name"];

//e poi imposto l'if

if(mysqli_query ($conn, "INSERT INTO tabella_db (immagine_1) VALUES ('$nomeimage')){
echo "corretto";
} else {
echo "sbagliato";
}

Ringrazio,
Andrea
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se è un copy/paste di quello che hai: attento agli apici (nota gli echo sono di colore rosso).
poi metti un var_dump per verificare la ricezione o posta cosa risulta

PHP:
//imposto la variabile con il nome dell'immagine
var_dump($_FILES["immagine_1"]["name"]);//poi lo togli
$nomeimage = $_FILES["immagine_1"]["name"];

//e poi imposto l'if

if(mysqli_query ($conn, "INSERT INTO tabella_db (immagine_1) VALUES ('$nomeimage')"){
echo "corretto";
} else {
echo "sbagliato";
}
 
Ultima modifica:

Hackx

Utente Attivo
20 Ago 2013
108
0
16
Ciao borgo italia :),

Ecco cosa mi restituisce dopo aver messo:

PHP:
var_dump($_FILES["immagine_1"]["name"]);//poi lo togli
$nomeimage = $_FILES["immagine_1"]["name"];

errori:
1) Notice: Undefined index: immagine_1 --> riga del var_dump
2) null
3) Notice: Undefined index: immagine_1 --> riga della variabile $nomeimage
4) corretto

Ti ringrazio ancora moltissimo,
Andrea

P.S.
Perdonami ma la questione degli apici non l'ho capita proprio.
Devo impostare gli apici in questo modo:

PHP:
echo 'parola';

Invece che in questo:

PHP:
echo "parola";
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
evidentemente non trasmette, mi viene un dubbio, nel tag form hai messo
<form action="pinco pallo.php" method="post" enctype="multipart/form-data">
cioe l'enctype?
poi per gli apici
no
hai dimenticato di chiuderli
if(mysqli_query ($conn, "INSERT INTO tabella_db (immagine_1) VALUES ('$nomeimage')"){

scusa dimenticavo
mi sono accorto ora che inizi da immagine_2, anche nella parte php devi mettere immagine_2 e non immagine_1
da quello che vedeo non hai un campo di input chiamato immagine_1
i nomi dei campi devono corrispondere alle chiavi che metti nel $_POST
 
Ultima modifica:

Hackx

Utente Attivo
20 Ago 2013
108
0
16
Ciao borgo italia :),

Il Primo problema sono riuscito a risolverlo :) ...mancava la parte dell'enctype e poi ho dato una raddrizzata generale al codice ;).

Ora però ho un problema identico solo in un form come questo:

Codice HTML:

HTML:
<form class="form-horizontal" role="form" action="controllo.php" id="form_offerte_veicoli" method="POST" enctype="multipart/form-data">
  <div class="form-group">
    <label for="nome" class="col-sm-2 control-label">nome*</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" name="nome" placeholder="nome">
    </div>
  </div>
  <br/>
  <div class="form-group">
    <label for="cognome" class="col-sm-2 control-label">Cognome*</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" name="cognome" placeholder="cognome">
    </div>
  </div>
  <br/>
  <div class="form-group">
    <label for="imm_1" class="col-sm-2 control-label">immagine 1</label>
    <div class="col-sm-10">
         <input type="file" name="imm_1"/> 
    </div>
  </div>
  <br/> 
  <div class="form-group">
    <label for="imm_2" class="col-sm-2 control-label">immagine 2</label>
    <div class="col-sm-10">
         <input type="file" name="imm_2"> 
    </div>
  </div>
  <br/> 
  <button style="margin-left:400px;width:150px; margin-top: 40px;" type="submit" class="btn btn-default">Invia</button>
</form>

codice PHP:

PHP:
<?php
include "../../../config.php";

//imposto la variabile con il nome dell'immagine
$imm_1 = (isset($_FILES["imm_1"]["name"]));
$imm_2 = (isset($_FILES["imm_1"]["name"])); 
		   
//recupero i dati dal form
$nome = $_POST['nome'];
$cognome= $_POST['cognome'];

if (mysqli_query ($conn, "INSERT INTO tabella_db (nome,cognome,imm_1,imm_2)
                  VALUES ('$nome','$cognome','$imm_1','$imm_2')") or die (mysqli_error ($conn)))
{
				  echo "dati memorizzati";
} else {

echo "problemi";
}

?>

Quando vado a testare il codice mi restituisce "dati memorizzati". Quando, in verità i nomi delle immagini non vengono memorizzati.

Come posso risolvere quest'altro problema :)

Ti ringrazio davvero moltissimo per tutti questi consigli !!!
Andrea
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
attento che stai usando male isset (http://it1.php.net/manual/en/function.isset.php)
PHP:
<?php
//...
$imm_1 = (isset($_FILES["imm_1"]["name"]));
$imm_2 = (isset($_FILES["imm_1"]["name"]));
//....
?>
isset ritorna true se la variabile esiste o false se non esiste
devi impostarlo così
PHP:
<?php
//... 
if(isset($_FILES["imm_1"]["name"])){
	$imm_1 = $_FILES["imm_1"]["name"]);
}
//....
?>
impara a usare il var_dump è uno degli strumenti utilissimi nel debug, es
PHP:
<?php
//...
$imm_1 = (isset($_FILES["imm_1"]["name"]));
var_dump($imm_1);
$imm_2 = (isset($_FILES["imm_1"]["name"]));
//....
?>
il var_dump ti avrevbbe restituito, ammesso che $_FILES["imm_1"]["name"] esista
cioè tipo variabile boeliana di valore true, che è tutt'unaltra cosa di
string(nn) "pinco_pallo.jpg"
cioè variabile tipo stringa lunga nn di valore pinco_pallo.jpg
cioè quello che dovrebbe contenere $_FILES["imm_1"]["name"]
 

Hackx

Utente Attivo
20 Ago 2013
108
0
16
Ciao borgo italia :),

Mi sto davvero impegnando nel trovare questa benedetta soluzione .. solo che ancora niente.

Grazie per la dritta "isset", non ne avevo idea che stavo sbagliando poiché ho sempre fatto in questo modo, ogni volta che mi imbattevo in un problema -undefined- ci mettevo un (isset()) senza pensarci due volte!

Ritornando a noi.. Ho modificato il mio codice in base ai tuoi consigli ed ecco qua:

PHP:
include "../../../config.php";

//imposto la variabile con il nome dell'immagine
if(isset($_FILES["imm_1"]["name"])){ 
    $imm_1 = $_FILES["imm_1"]["name"]; 
} 
var_dump($imm_1);------------------------------------------------------------------------------> 1

if(isset($_FILES["imm_1"]["name"])){ 
    $imm_2 = $_FILES["imm_1"]["name"]; 
} 
	   
//recupero i dati dal form
@$nome = $_POST['nome'];
@$cognome = $_POST['cognome'];

if (mysqli_query ($conn, "INSERT INTO in_vendita_veicoli (nome,cognome,imm_1,imm_2) 
                  VALUES ('$nome','$cognome','$imm_1','$imm_2')") or die (mysqli_error ($conn))) -------> 2 e 3
{
echo "dati memorizzati";
} else {

echo "problemi";
}

Ecco gli errori che ora mi restituisce:

1 - Undefined variable: imm_1
null

2 - Undefined variable: imm_1

3 - Undefined variable: imm_2

e il classico "dati memorizzati" ma giustamente il nome dell'immagine nel db non è presente!

Ringrazio ancora,
Andrea
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti posto lo schema, se provi funzia
PHP:
<?php
//dati di connessione
if(isset($_POST['invia'])){
	if(isset($_FILES["imm_1"]["name"])){ 
    	$imm_1 = $_FILES["imm_1"]["name"]; 
		var_dump($imm_1);
	}
	if(isset($_FILES["imm_2"]["name"])){ 
    	$imm_2 = $_FILES["imm_2"]["name"]; 
		var_dump($imm_2);
	}
	//poi dividi la query per verificare che venga giusta
	$q= "INSERT INTO in_vendita_veicoli (nome,cognome,imm_1,imm_2) VALUES ('$nome','$cognome','$imm_1','$imm_2')";
	var_dump($q);
	//if (mysqli_query ($conn, $q) or die (mysqli_error ($conn))){
	//ecc.....
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
    <!-- h saltato gli altri -->
    <p><input type="file" name="imm_1"/></p>
	<p><input type="file" name="imm_2"/></p>
    <p><input type="submit" name="invia" value="invia"></p>
</form>

da quello che capisco stai facendo un form da cui un utente carica delle immagini, ATTENTO ci vogliono dei controlli sicuri altrimenti qualcuno può insertiti un bel cancella_tutto.exe
 

Hackx

Utente Attivo
20 Ago 2013
108
0
16
Ciao borgo italia :),

Guarda non ti voglio stressare ancora :)!
Ho ancora un piccolo problema (però potrei provare a risolverlo da solo).. ovvero che, ora, il capo 'nome' e 'cognome' del 1o form non mi viene scritto nel DB.

Riepilogando...

1o file.php contiene tutto il form con l'action che rimanda tutto il controllo al file che tu mi hai postato nel messaggio precedente.

2o file.php è il controllo vero e proprio (codice messaggio precedente)

---------------------------------------------------------------------------------------------------------------------------

Ti faccio alcune domande dimmi se mi sbaglio.

1 - Il richiamo delle variabili (nome,cognome) può andar bene lì ?..poiché non mi viene scritto all'interno del DB.

PHP:
<?php 
// include il file config.php

//dati di connessione 
if(isset($_POST['invia'])){ 
    if(isset($_FILES["imm_1"]["name"])){  
        $imm_1 = $_FILES["imm_1"]["name"];  
        var_dump($imm_1); 
    } 
    if(isset($_FILES["imm_2"]["name"])){  
        $imm_2 = $_FILES["imm_2"]["name"];  
        var_dump($imm_2); 
    } 

//qua inserisco il richiamo della variabile nome 
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];

    //poi dividi la query per verificare che venga giusta 
    $q= "INSERT INTO in_vendita_veicoli (nome,cognome,imm_1,imm_2) VALUES ('$nome','$cognome','$imm_1','$imm_2')"; 
    var_dump($q); 
    //if (mysqli_query ($conn, $q) or die (mysqli_error ($conn))){ 
    //ecc..... 
} 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> 
    <!-- h saltato gli altri --> 
    <p><input type="file" name="imm_1"/></p> 
    <p><input type="file" name="imm_2"/></p> 
    <p><input type="submit" name="invia" value="invia"></p> 
</form>


2 - I controlli di sicurezza ?.. mi sono sempre posto questa domanda.

Ho letto svariati articoli riguardanti quest'argomento:
- SQL injection,
- Per le immagini mettere sempre i formati accettati (jpeg, jpg, png, ecc)
- modificare parametri PHP.ini (register_globals ecc ecc)

anche qui su mr webmaster ho trovato una guida ;) !

Però tu da programmatore esperto.. o sicuramente più esperto di me :) .. mi sapresti dare qualche altra dritta ??

Ti ringrazio moltissimo :)!!!
Andrea

P.S.
Ci tengo a dirti che ho un paio di giorni di fuoco e potrei non risponderti subito :) !
 
Discussioni simili
Autore Titolo Forum Risposte Data
trattorino Estrarre Nome Utente jquery div php PHP 9
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
M Estrarre soltanto i prodotti con stessa descrizione PHP 10
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
M Estrarre valore con SELECT COUNT PHP 0
D Estrarre database con link esterno Database 10
S Raggruppare ed estrarre data più recente MySQL 6
F Estrarre ultima foto da cartelle PHP 2
R Estrarre valori duplicati più volte PHP 0
C Estrarre dati stringa Sql Database 1
L estrarre valori max tra più tabelle MySQL 2
L Estrarre da Cartella una determinata 'via' PHP 15
J estrarre url dei file video da youtube "get_video_info" PHP 6
M Estrarre dati da un database PHP 2
M Estrarre valori MAX da un db con una left join MySQL 8
M Estrarre dati da una select HTML PHP 3
C [PHP] Estrarre da una classe i valori che mi interessano PHP 5
S [PHP] Estrarre dati da tabella e fare la media ad intervalli di tempo PHP 11
R [PHP] Estrarre id utente loggato.? PHP 4
S [PHP] Estrarre elementi array su più variabili PHP 5
S [PHP] Estrarre dati tabella in diversi array PHP 2
P [MS ACCESS] Estrarre più somme da una query MS Access 4
trattorino estrarre titolo video facebook in php PHP 0
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
S [Javascript] come estrarre valori array e inserirli in diverse variabili Javascript 1
N [PHP] Estrarre singolo valore da array PHP 4
trattorino [PHP] sql estrarre in base all'ultima visita PHP 4
P [Visual Basic] access sql estrarre id vendite x cli e articolo con data maggiore del recordset Visual Basic 2
Jensen [PHP] Estrarre prossimi 4 lunedì PHP 4
trattorino [PHP] estrarre dati singoli PHP 1
G [PHP] estrarre data da timeline yyyy-dd-gg hh:mm:ss PHP 4
Z Estrarre dati da un DB Mysql PHP 4
I database mysql estrarre due tabelle Database 2
S [PHP] Estrarre dati colonna in una stringa PHP 6
S [PHP] estrarre dati sito web protetto con username e password PHP 13
Merlina3377 [PHP] estrarre solo un determinato id da tanti con REGEXP O LIKE PHP 1
Gigi87 estrarre i dati da un forum o social network Presentati al Forum 1
trattorino [Javascript] estrarre id link yt Javascript 1
S [PHP] estrarre le email da un elenco di url PHP 21
T4MAR4 [PHP] estrarre tag da un testo PHP 3
T [PHP] Estrarre stringa PHP 3
G [PHP] ESTRARRE DA DB VALORE MASSIMO E MINIMO IN UN INTERVALLO IMPOSTABILE A PIACERE PHP 56
bubino8 [PHP] Estrarre dominio No Sottodomini PHP 10
L [PHP] Estrarre dati da sito web Offerte e Richieste di Lavoro e/o Collaborazione 4
sandropochi [PHP] Query per estrarre record con data successiva a quella odierna PHP 2
gandalf1959 Estrarre da un db mysql le mail, eliminando le doppie PHP 6
giancadeejay [PHP] Estrarre solo record dell'utente connesso PHP 4
U [PHP] estrarre i risultati di una query e visualizzarli in una tabella. PHP 9

Discussioni simili