Saluti a tutti!
Ho questo problema:
Ho un sito in locale basato su LAMP. In pratica, in una pagina è permesso l'invio di file (indipendentemente dal tipo, dimensione, nome, etc., non mi interessano controlli di questo genere.) I file vengono passati ad un'altra pagina (insieme ad un id con metodo GET) che li sposta in una directory con permessi 777. Questo è il codice per la creazione della directory:
Codice PHP:
$id=$_GET['idAzienda']; $sel = mysql_query("SELECT nome FROM azienda WHERE azienda.idAzienda = $id") or die (mysql_error()); while ($row = mysql_fetch_assoc($sel)) { $nome = htmlspecialchars(stripslashes(utf8_decode(trim($row[nome]))),ENT_QUOTES); mkdir ("./Aziende/$nome", 0777); }
Ok. Funziona.
Proseguo con lo spostamento dei file nella cartella appena creata, mediante:
Codice PHP:
if (!move_uploaded_file($_FILES['visuracamerale']['tmp_name'], "Aziende/$nome/".$_FILES['visuracamerale']['name'])) {
$flag=0;
unlink($_FILES['visuracamerale']['tmp_name']); } else {
$nomefilevisura = $_FILES['visuracamerale']['name'];
$flag=1;
}
if (!move_uploaded_file($_FILES['variazvisura']['tmp_name'], "Aziende/$nome/".$_FILES['variazvisura']['name'])) {
$flag=0;
unlink($_FILES['variazvisura']['tmp_name']); } else {
$nomefilevarvis = $_FILES['variazvisura']['name'];
$flag=1;
}
.....
e ho altri campi presi così. Alla fine, ho creato questo:
Codice PHP:
if ($flag == "1") {
$insvis="INSERT INTO visuracamerale(nomefilevisura) VALUES ('$nomefilevisura')";
mysql_query("$insvis") or die (mysql_error());
$idvis=mysql_insert_id();
$insidvis = "INSERT INTO visuraaziende(idVisura, idAzienda) VALUES ('$idvis', '$idAzienda')";
mysql_query("$insidvis") or die (mysql_error());
$insvarvis="INSERT INTO variazvisura(nomefilevarvis) VALUES ('$nomefilevarvis')";
mysql_query("$insvarvis") or die (mysql_error());
$idvarvis=mysql_insert_id();
$insidvarvis = "INSERT INTO variazvisaziende(idVariazcam, idAzienda) VALUES ('$idvarvis', '$idAzienda')";
mysql_query("$insidvarvis") or die (mysql_error());
.......
Per memorizzare all'interno del db l'url di ogni file (sono 14 files presi da altrettanti campi nel form nella pagina sorgente).
Ora, finalmente e purtroppo, il problema:
Se invio tutti i file, problema non sorge. Se invece ne invio solo alcuni, crea comunque dei riferimenti (id) ad un file che non esiste... in pratica, restituisce un valore in bianco all'interno del db. La richiesta è: esiste un modo per evitare che vengano creati dei riferimenti nulli ma comunque permettendo la creazione all'interno del db dei file inseriti?
Un esempio per chiarirsi...
Vorrei che:
- inserendo solo alcuni files nella pagina con il form di invio, verrebbe riempito il database SOLO con i dati inseriti, trascurando i campi lasciati in bianco.
Ora come ora, il db viene riempito sì con i nomi dei file, ma anche con riferimenti in bianco per i campi lasciati vuoti (crea l'id di un qualcosa che non esiste!).
E' possibile risolvere il busillis? Vi sono grato, è un po' di tempo che sto letteralmente sclerando!!!
Grazie a tutti!