[PHP] multi upload immagine da form

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
sei sicuro che debba essere
if(trim($_FILES["submit"]["name"]) == '')
e non
if(trim($_FILES["immagine"]["name"]) == '')
?

con immagine

mi da questo:
array(5) { ["name"]=> array(1) { [0]=> string(9) "prova.jpg" } ["type"]=> array(1) { [0]=> string(10) "image/jpeg" } ["tmp_name"]=> array(1) { [0]=> string(51) "C:\Program Files (x86)\EasyPHP-12.1\tmp\php1657.tmp" } ["error"]=> array(1) { [0]=> int(0) } ["size"]=> array(1) { [0]=> int(7474) } }
Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\provaF.php on line 41

Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\provaF.php on line 42

Notice: Undefined offset: 3 in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\provaF.php on line 43

Notice: Undefined index: immagine in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\provaF.php on line 45
Non hai selezionato nessun file!

Sinceramente penso che ci siano un paio di errori nel codice....però essendo un neofita alle prime armi non son capace di scovarli/correggerli...non cè uno script già fatto x il multi upload di foto con inserimento nel db dell'url relativo?? in modo che poi io aggiunga solo i controlli max size e le estensioni?
 

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
oltre a quello che ha detto longo
id primary key e int spero

Si è un int.
Cmq a me non funziona, vi riposto il codice e gli errori:
PHP:
<?php 
if(isset($_POST['submit'])){ 
	
    $err="";//metti a vuoto una stringa 
    $nome=trim($_POST['nome']); //metto solo nome il titolo è simile 
    //reg_match('/^[a-z0-9]{5,15}/i' 
    if(!preg_match('/^[a-zA-Z]{2,20}$/', $nome)){//verifico che siano solo lettere min 2 max 20 
        $err.="non hai inserito il nome o nome non valido<br />";//concateno gli errori 
	} 
	$prezzo=trim($_POST['prezzo'])+0.0; 
    if($prezzo==0 || !is_numeric($prezzo)){// potresti verificare anche che superi un certo valore 
        $err.="prezzo non valido<br />"; 
    } 
	else {
	//************* INIZIO CONTROLLLO CARICAMENTO IMMAGINI ***************
	var_dump($_FILES['image']);//da questa vedi come viene costruito l'array provando a caricare più immagini 
    echo "</pre>"; 
	// limite peso in byte 
	$peso_max = 1024 * 1024;
	// inizializziamo il messaggio
	$messaggio = "Carica una o piu immagini, fino ad un massimo di 4 consentite:";
	// estensioni ammesse
	$estensioni = array("jpg", "png", "bmp", "gif");
	// percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
	$cartella = "../provaF";
	$immagine1 = $_FILES['image']['name'][0]; 
	$immagine2 = $_FILES['image']['name'][1]; 
	$immagine3 = $_FILES['image']['name'][2]; 
	$immagine4 = $_FILES['image']['name'][3]; 
	// verifichiamo che l'utente abbia selezionato un file   
    if(trim($_FILES["image"]["name"]) == '')   
      {   echo 'Non hai selezionato nessun file!';   }  
	 
    // verifichiamo che il file è stato caricato   
    else if(!is_uploaded_file($_FILES["image"]["tmp_name"]) or $_FILES["image"]["error"]>0)   
      {    echo 'Si sono verificati problemi nella procedura di upload!';    }   
    // verifichiamo che il tipo è fra quelli consentiti   
    else if(!in_array(strtolower(end(explode('.', $_FILES["image"]["name"]))),$estensioni))   
      {    echo 'Il file che si desidera uplodare non è fra i tipi consentiti!';    }   
    // verifichiamo che la dimensione del file non eccede quella massima   
    else if($_FILES["image"]["size"] > $max_byte)   
      {   echo ' eccede la dimensione massima!';  }  
    // verifichiamo che la cartella di destinazione settata esista   
    else if(!is_dir($cartella))   
        {    echo 'La cartella in cui si desidera salvare il file non esiste!';   }     
    // verifichiamo il successo della procedura di upload nella cartella settata   
    else if(!move_uploaded_file($_FILES["image"]["tmp_name"], $cartella_upload.$_FILES["image"]["name"]))   
      {    echo 'Ops qualcosa è andato storto nella procedura di upload!';    }   
   
    // altrimenti significa che è andato tutto ok   
     else   
      { 
	  $sql = new mysql("localhost", "root", "", "luca_db");
						$query="INSERT INTO prova(nome, prezzo,immagine,img2,img3,img4) 
						VALUES('$nome','$prezzo','provaF/imagine1','provaF/imagine2','prova/imagine3','prova/imagine4')";  
						var_dump($query);//e qui verifichi che venga scritta come dovrebbe
						if(!$sql->query($query)) { 
							echo $sql->error; }
      echo 'Upload eseguito correttamente!'; 
	  //e torni al form pulito dopo 100 secondi 
    echo "<meta http-equiv='Refresh' content='100; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
      }   
    }   	    
}
?>
array(5) { ["name"]=> array(4) { [0]=> string(7) "b&w.jpg" [1]=> string(14) "Desgriglia.jpg" [2]=> string(9) "prova.jpg" [3]=> string(10) "tetto1.jpg" } ["type"]=> array(4) { [0]=> string(10) "image/jpeg" [1]=> string(10) "image/jpeg" [2]=> string(10) "image/jpeg" [3]=> string(10) "image/jpeg" } ["tmp_name"]=> array(4) { [0]=> string(51) "C:\Program Files (x86)\EasyPHP-12.1\tmp\phpF599.tmp" [1]=> string(51) "C:\Program Files (x86)\EasyPHP-12.1\tmp\phpF5B9.tmp" [2]=> string(51) "C:\Program Files (x86)\EasyPHP-12.1\tmp\phpF5D9.tmp" [3]=> string(51) "C:\Program Files (x86)\EasyPHP-12.1\tmp\phpF5DA.tmp" } ["error"]=> array(4) { [0]=> int(0) [1]=> int(0) [2]=> int(0) [3]=> int(0) } ["size"]=> array(4) { [0]=> int(63525) [1]=> int(153533) [2]=> int(7474) [3]=> int(63869) } }
Warning: trim() expects parameter 1 to be string, array given in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\provaF.php on line 45
Non hai selezionato nessun file!



ps: riuscite a provarlo?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se la riga 45 è questa
PHP:
 if(trim($_FILES["image"]["name"]) == '')   
      {
togli quel trim, non puoi trimmare un array in quel modo
 
Ultima modifica:

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
se la riga 45 è questa
PHP:
 if(trim($_FILES["image"]["name"]) == '')   
      {
togli quel trim, non puoi trimmare un array

tolto...l'errore seguente è:
Warning: is_uploaded_file() expects parameter 1 to be string, array given in C:\Program Files (x86)\EasyPHP-12.1\www\Tropina\form\provaF.php on line 49
Si sono verificati problemi nella procedura di upload!
su
PHP:
 else if(!is_uploaded_file($_FILES["image"]["tmp_name"]) or $_FILES["image"]["error"]>0)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
stesso discorso, non puoi verificare se è uplodato un array
$_FILES["image"]["tmp_name"] è un array ed anche $_FILES["image"]["error"]
tanto per farti un esempio se carichi due imm imm_1 e imm_2 la prima si carica la seconda no
avrai quindi
$_FILES["image"]["error"][0] ==> 0
$_FILES["image"]["error"][1] ==> 333
 

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
stesso discorso, non puoi verificare se è uplodato un array
$_FILES["image"]["tmp_name"] è un array ed anche $_FILES["image"]["error"]
tanto per farti un esempio se carichi due imm imm_1 e imm_2 la prima si carica la seconda no
avrai quindi
$_FILES["image"]["error"][0] ==> 0
$_FILES["image"]["error"][1] ==> 333

ehm....e come si risolve? :$
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per questo è facile
PHP:
<?php
$_FILES["image"]["name"]=array_map("trim",$_FILES["image"]["name"]);
?>
per l'aktro ci vuole un foreach, ci penso e forse ti so dire
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
trim su quello non andava perchè tolto il foreach in quella variabile ci sarà un vettore e non una stringa.
 

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
ciao
per questo è facile
PHP:
<?php
$_FILES["image"]["name"]=array_map("trim",$_FILES["image"]["name"]);
?>
per l'aktro ci vuole un foreach, ci penso e forse ti so dire

ciao sono andato avanti con il codice, per ora funzia una immagine, la carica sia nel db che nella cartella nel server. Unica cosa è come poter modificare in modo che carichi anche le altre 3?
PHP:
// limite peso in byte 
$peso_file = 1024 * 1024;
// inizializziamo il messaggio
$messaggio = "Carica una o piu immagini, fino ad un massimo di 4 consentite:";
// estensioni ammesse
$estensioni = array("jpg", "png", "bmp", "gif");
// percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
$dir = "images_immobili";
// verifichiamo che sia stato premuto il submit
if (isset($_POST['submit'])) { // && $_POST['upload'] == "Carica immagini") {
    // azzeriamo il messaggio
    $messaggio = "";
    // recuperiamo e uniamo le informazionei sulle immagini
    $infoimages = array_combine($_FILES["image"]['name'], $_FILES["image"]['tmp_name']);
    // cicliamo le immagini
	$cnt=0;
    foreach ($infoimages as $k => $v) {
	if ($cnt < 4) {
		++$cnt;
        // nome del file
        $nomefile = strtolower($k);
		
        // controlliamo il peso immagine
        if (filesize($v) < $peso_file) {
            // recuperiamo l'estensione
            $estensionefile = pathinfo($nomefile, PATHINFO_EXTENSION);
            // controlliamo il tipo immagine
            if (in_array(strtolower($estensionefile), $estensioni)) {
                // controllo caricamento
                if (is_uploaded_file($v)) {
                    // spostiamo il file nella cartella immagini
                    if (!move_uploaded_file($v, "$dir/$nomefile")) {
                        $messaggio .= "<br/>Impossibile spostare il file $k";
                    } else {
                        $messaggio .= "<br/>Immagine $k caricata con successo";
						
						
                    }
                } else {
                    $messaggio .= "<br/>Errore nell'upload del file $k.";
					}
            } else {
                $messaggio .= "<br/>Tipo immagine non consentito : $k";
				}
        } else {
            $messaggio .= "<br/>Immagine $k non caricata : limite peso superato";
			}
	} else { $messaggio .= "<br/>Hai inserito più di 4 immagini";
		}
    }

}

nella query di INSERT INTO, nell record immagine metto images_immobili/$nomefile , però per i record img2,img3,im4 cosa metto?
 
Discussioni simili
Autore Titolo Forum Risposte Data
N problema script php mysql multi upload immagini PHP 31
ANDREA20 [PHP] multi lingue PHP 1
P [PHP] Multi-session PHP 1
M Multi PHP su IIS 6 Web Server 1
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0

Discussioni simili