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?
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'])."'>";
}
}
}
?>
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)
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
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
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?