Salvare documenti in DB

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Buonasera,
è la prima volta che tento di salvare dei files nel DB percui scusate le eventuali domande inutili.
Ho letto diversi articoli ed ho provato a fare come da esempio:
Questo è il form in htm:
HTML:
<body>
<FORM METHOD ="post" action="insert_sinistro.php">
<table align="center" width="900px" height="100px">
<tr><td>
<img src="images/logo_sinistri.png" align="middle" >
</td></tr>
</table>
<br /><br />
<table width="480" height="382" border=0 align="center" cellpadding=5 cellspacing=5>
  <tr>
<td><font face="Eras Medium ITC">Operatore:</font></td><td width="234">
<input type=text name="operatore" size=35 maxlength=40 value="<?php echo $operatore; ?>"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Data Inserimento:</font></td><td>
<input type=text name="data_ins" value="<?php echo $data; ?>" size=35 maxlength=40 ></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Data Rilevamento:</font></td><td>
<input type=text name="data_ril" value="" size=35 maxlength=40 ></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Lettera Nolo:</font></td><td>
<input type=text name="lettera_nolo" size=35 maxlength=40 value=""></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Targa:</font></td><td>
<input type=text name="targa" size=35 maxlength=40 value=""></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Modello:</font></td><td>
<input type=text name="modello" size=35 maxlength=40 value=""></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Colore:</font></td><td>
<input type=text name="colore" size=35 maxlength=40 value=""></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Descrizione 1:</font></td><td>
<textarea name="descrizione1" cols="50" rows="15"></textarea></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Descrizione 2:</font></td><td>
<textarea name="descrizione2" cols="50" rows="15"></textarea></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Descrizione 3:</font></td><td>
<textarea name="descrizione3" cols="50" rows="15"></textarea></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Dichiarazione:</font></td>
<td><input type="file" name="dichiarazione" size="40"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Foto 1:</font></td>
<td><input type="file" name="foto1" size="40"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Foto 2:</font></td>
<td><input type="file" name="foto2" size="40"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Foto 3:</font></td>
<td><input type="file" name="foto3" size="40"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Allegato 1:</font></td>
<td><input type="file" name="allegato1" size="40"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Allegato 2:</font></td>
<td><input type="file" name="allegato2" size="40"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Allegato 3:</font></td>
<td><input type="file" name="allegato3" size="40"></td>
</tr>
<tr><td></td><td>
	<p align="center">
	<input type=submit value="Inserisci sinistro" name="inserisci" style="font-weight: 700"></td></tr>
</table>
</form>
</body>
Questa è la pagina PHP che si preoccupa dei files e dell'inserimento nel DB:
PHP:
<?php
//CONNESSIONE AL DATABASE
include('connect.php');
//RECUPERA DATI DAL FORM
$operatore = $_POST['operatore'];
$operatore = addslashes(htmlspecialchars(($_POST['operatore'])));
$data_ins = $_POST['data_ins'];
$data_ril = $_POST['data_ril'];
if($data_ril ==""){
echo "<p>Il campo Data di Rilevamento non puo essere vuoto</p>";
$a=1;
}else{
  $a=2;
  }
$lettera_nolo = $_POST['lettera_nolo'];
$lettera_nolo = addslashes(htmlspecialchars(($_POST['lettera_nolo'])));
if($lettera_nolo ==""){
echo "<p>Il campo Lettera Nolo non puo essere vuoto</p>";
$b=1;
}else{
  $b=2;
  }
$targa = $_POST['targa'];
$targa = addslashes(htmlspecialchars(($_POST['targa'])));
if($targa ==""){
echo "<p>Il campo Targa non puo essere vuoto</p>";
$c=1;
}else{
  $c=2;
  }
$modello = $_POST['modello'];
$modello = addslashes(htmlspecialchars(($_POST['modello'])));
if($modello ==""){
echo "<p>Il campo Modello non puo essere vuoto</p>";
$d=1;
}else{
  $d=2;
  }
$colore = $_POST['colore'];
$colore = addslashes(htmlspecialchars(($_POST['colore'])));
$descrizione1 = $_POST['descrizione1']; 
$descrizione2 = $_POST['descrizione2'];
$descrizione3 = $_POST['descrizione3'];
$dichiarazione = $_POST['dichiarazione'];
if($dichiarazione ==""){
echo "<p>Il campo Dichiarazione non puo essere vuoto</p>";
$e=1;
}else{
  $e=2;
  }
$foto1 = $_POST['foto1'];
if($foto1 ==""){
echo "<p>Il campo Foto 1 non puo essere vuoto</p>";
$f=1;
}else{
  $f=2;
  }
$foto2 = $_POST['foto2'];
if($foto2 ==""){
echo "<p>Il campo Foto 2 non puo essere vuoto</p>";
$g=1;
}else{
  $g=2;
  }
$foto3 = $_POST['foto3'];
if($foto3 ==""){
echo "<p>Il campo Foto 3 non puo essere vuoto</p>";
$h=1;
}else{
  $h=2;
  }
$allegato1 = $_POST['allegato1'];
$allegato2 = $_POST['allegato2'];
$allegato3 = $_POST['allegato3'];
//ritorno al form
  if($a == 2 && $b == 2 && $c == 2 && $d == 2 && $e == 2 && $f == 2  && $g == 2 && $h == 2 ){
$data_files = addslashes(fread(fopen($_FILES["dichiarazione"]["tmp_name"], "rb"), $_FILES["dichiarazione"]["size"]));
$data_files1 = addslashes(fread(fopen($_FILES["foto1"]["tmp_name"], "rb"), $_FILES["foto1"]["size"]));
$data_files2 = addslashes(fread(fopen($_FILES["foto2"]["tmp_name"], "rb"), $_FILES["foto2"]["size"]));
$data_files3 = addslashes(fread(fopen($_FILES["foto3"]["tmp_name"], "rb"), $_FILES["foto2"]["size"]));
// ESEGUIAMO LA QUERY DI INSERIMENTO
$result = @mysql_query("INSERT INTO sinistri (id,data_ins, data_ril, operatore, descrizione1, descrizione2, descrizione3,lettera_nolo, targa, modello, colore, dichiarazione, foto1, foto2, foto3, allegato1, allegato2, allegato3, size) 
VALUES (NULL,'$data_ins','$data_ril','$operatore','$descrizione1','$descrizione2','$descrizione3','$lettera_nolo','$targa','$modello','$colore','$data_files','$data_files1','$data_files2','$data_files3','$data_files4','$data_files5','$data_files6','" . $_FILES["dichiarazione"]["size"] . "')") 
or die ("<div align=center class=testo> <b>Errore di inserimento utente: ". mysql_error() ."</b></div>");

// ESITO POSITIVO
echo "Il file " . basename($_FILES["dichiarazione"]["name"]) . " è stato correttamente inserito nel Database.";
  } else {
	  echo ' ERROREEEEEEEEEEEEEE';
  }
?>

Mi dice esito positivo ma non mi legge i file.. mi restituisce nel DB sulle colonne dei file questa scritta:

Codice:
[BLOB - 0 B]

Mi sapete aiutare per favore?

Grazie
 
scusa se non rispondo direttamente alla tua domanda,
ma sono contrario ad inserire documenti e foto nel db perché la dimensione tende a trascendere, complicando le operazioni di backup, che, credo siano importanti per l'attività che stai trattando
d'altra parte il "file system" è il miglior database per i files in genere
quindi il mio suggerimento è di creare una cartella sinistri (magari associata all'anno) in cui memorizzare le cartelle specifiche di ogni sinistro, con all'interno di ciascuna i propri documenti (che possono non essere limitati dalle colonne che hai definito nel db)
riportando nel db solo l'elenco dei nomi con il relativo path
scusa ancora se non tento di risolvere il tuo problema specifico
ciao
Marino
 
potrebbe essere una soluzione... a quel punto che dovrei fare? a me servirebbe che l'img a quel punto riporti almeno ID e data... e spostarla nella cartella di un percorso..
 
puoi creare una cartella con l'id che identifica il "sinistro" ed al suo interno memorizzi tutti i files che hai caricato da form per il sinistro stesso, avendo cura di controllare il buon fine delle operazioni per evitare di trovare successivamente situazioni incomplete
ciao
Marino
 

Discussioni simili