Salve, ho un problema con gli allegati multipli.. permetto agli utenti di allegare più file contemporaneamente, non sapendo però quanti allegati sfruttano, devo prevedere che ne possano allegare da 1 a n. Ho optato per inserire tutto in un array e poi scioglierlo con il seguente codice.. ma non riesco a farlo funzionare:
Codice PHP:
foreach($_FILES['UPLOAD'] as $_FILES['ALLEGATO']) {
if($_FILES['ALLEGATO']['name'] != '') {
$last_insert_id = mysql_query("SELECT * FROM " . $prefix . "test ORDER BY id DESC LIMIT 1");
$rowid = mysql_fetch_array($last_insert_id);
$id = $rowid['id'];
$uploadLocation = $dir['sources'] . 'upload/';
$nome = image_escape($_FILES['ALLEGATO']['name']);
// Verifico quali estensioni sono consentite
$verify = "SELECT * FROM " . $prefix . "options WHERE op_value='yes' AND op_ext='" . $_FILES['ALLEGATO']['type'] . "' LIMIT 1";
$result = mysql_query($verify) or die ("Errore durante la verifica degli allegati ammessi!");
$nr_result = mysql_num_rows($result);
$verify_file = "SELECT * FROM " . $prefix . "allegati WHERE nome='" . $nome . "' LIMIT 1";
$result_file = mysql_query($verify_file) or die ("Errore durante la verifica del numero di allegati con lo stesso nome nel database!");
$nr_file = mysql_num_rows($result_file);
if($nr_result == 1) {
if (!file_exists($uploadLocation)){
$error .= "
Spiacente la directory di destinazione non esiste!";
} else if (!is_writeable($uploadLocation)) {
$error .= "
Spiacente ma la directory di destinazione non è scrivibile!";
} else if ($nr_file == 1) {
$error .= "
" . basename($_FILES['ALLEGATO']['name']) . " c'è già un file con lo stesso nome!";
} else {
$target_path = $uploadLocation . $nome;
if(@move_uploaded_file($_FILES['ALLEGATO']['tmp_name'], $target_path)) {
$msg .= "
" . basename($_FILES['ALLEGATO']['name']) . " è stato caricato con successo!";
$qry = "INSERT INTO " . $prefix . "allegati (percorso, nome, ext, idNews) VALUES ('" . $target_path . "', '" . $nome . "', '" . $_FILES['ALLEGATO']['type'] . "', '" . $id . "')";
$upload_db = mysql_query($qry) or die(mysql_error());
} else {
$error .= "
Processo di caricamento fallito!";
}
}
} else {
$error .= "
Spiacente estensione non riconosciuta/abilitata";
}
}
}
Ho un form che è di tipo file e ha come name UPLOAD[] che inserisce tutto quanto in un array.. il mio problema è che non riesco a scioglierlo.. ho fatto un pirnt_r di $_FILES e questo è il risultato:
Codice PHP:
¨Array ( [UPLOAD] => Array ( [name] => Array ( [0] => doc 1.doc [1] => doc 2.doc ) [type] => Array ( [0] => application/msword [1] => application/msword ) [tmp_name] => Array ( [0] => /tmp/phpVbHOVH [1] => /tmp/phpV7m5fs ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 0 [1] => 0 ) ) [ALLEGATO] => Array ( [0] => doc 1.doc [1] => doc 2.doc ) ) Array ( [UPLOAD] => Array ( [name] => Array ( [0] => doc 1.doc [1] => doc 2.doc ) [type] => Array ( [0] => application/msword [1] => application/msword ) [tmp_name] => Array ( [0] => /tmp/phpVbHOVH [1] => /tmp/phpV7m5fs ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 0 [1] => 0 ) ) [ALLEGATO] => Array ( [0] => application/msword [1] => application/msword ) ) Array ( [UPLOAD] => Array ( [name] => Array ( [0] => doc 1.doc [1] => doc 2.doc ) [type] => Array ( [0] => application/msword [1] => application/msword ) [tmp_name] => Array ( [0] => /tmp/phpVbHOVH [1] => /tmp/phpV7m5fs ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 0 [1] => 0 ) ) [ALLEGATO] => Array ( [0] => /tmp/phpVbHOVH [1] => /tmp/phpV7m5fs ) ) Array ( [UPLOAD] => Array ( [name] => Array ( [0] => doc 1.doc [1] => doc 2.doc ) [type] => Array ( [0] => application/msword [1] => application/msword ) [tmp_name] => Array ( [0] => /tmp/phpVbHOVH [1] => /tmp/phpV7m5fs ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 0 [1] => 0 ) ) [ALLEGATO] => Array ( [0] => 0 [1] => 0 ) ) Array ( [UPLOAD] => Array ( [name] => Array ( [0] => doc 1.doc [1] => doc 2.doc ) [type] => Array ( [0] => application/msword [1] => application/msword ) [tmp_name] => Array ( [0] => /tmp/phpVbHOVH [1] => /tmp/phpV7m5fs ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 0 [1] => 0 ) ) [ALLEGATO] => Array ( [0] => 0 [1] => 0 ) )
questo è il rultato.. non ci capisco nulla.. finchè si tratta di un singolo file riesco a caricarlo con successo, ma inserendo l'opportunità di caricare più file contemporanemante, sto impazzendo..
qualcuno che potrebbe indirizzarmi sulla retta via? perchè io non so più dove sbattere la testa..