386 messaggi dal 25 maggio 2001
Salve, sto utilizzando la classe Baol74 per l'upload di immagini sul server e nel DB Access (il cliente per il momento utilizza ancora questa tecnologia, successivamente passero ad ASP.NET)
Se nel form inserisco solo un campo per l'inserimento dell'immagine funziona, se invece aggiungo altri campi per l'inserimento delle immagini mi duplica i record nel Db per quanti sono i campi immagine:

Nell'esempio qui sotto ci sono solo 2 campi immagine PFoto e PFoto2 mi inserisce due record nella tabella annunci del DB!
Ho il seguente form (dal quale inserisco dei campi testo e due campi immagine per il momento):
<form name="f" action="add_record.asp" method="post"  enctype="multipart/form-data">

<input type="text" class="form-control" name="titolo" id="titolo" placeholder="Titolo" value="" /><br>


<INPUT TYPE="file"class="form-control" name="PFoto" id="PFoto" placeholder="Percorso foto"><br>


<textarea name="annuncio" cols="30" rows="10" id="annuncio" class="form-control" placeholder="Annuncio"></textarea><br>




<INPUT TYPE="file"class="form-control" name="PFoto2" id="PFoto2" placeholder="Percorso foto 2">


<div class="spacer"></div>


<p><input type="submit" name="submit_job" class="btn btn-primary" value="Inserisci Annuncio" /></p>
</form>

il file per l'upload dei file e l'inserimento dei dati nel db è il seguente:
<!--#include file="upload.asp"-->
<%
Dim oUpload
Set oUpload= new cUpload
With oUpload
'La riga seguente impoosta la connessione al database e la tabella di inserimento dati
'La connesione e la tabella verranno aperti con il metodo oUpload.Database.Open()
.SetDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("/mdb-database/news.mdb"),"SELECT Top 1 * FROM annunci"
.EnabledAspUpload    = False
.EnabledImageSize    = False
.EnabledLog          = False
.AutoRename          = True
.Overwrite             = False
.SetPath "\public\"
.Load
.MoveFirst
if .EOF then
    NumFiles = .Count()
    Response.write "0 Files caricati su " & NumFiles &" : controlla le dimensioni e il tipo di file."
else
    .Database.Open()
    While Not .EOF
            .Save
            response.Write "il file " & .GetFileName &" è stato salvato <br>"
            'Inserimento dei valori
            .Database.Fields("titolo") = .Form("titolo")
    .Database.Fields("annuncio") = .Form("annuncio")
    .Database.Fields("PFoto") = .GetFileName
    .Database.Fields("PFoto2") = .GetFileName
            'Inserimento
            .Database.AddNew()
    .MoveNext
    Wend
end if
End With
Set oUpload = Nothing
    Response.Redirect "annuncio.asp"
%>

Come posso risolvere il problema?

Grazie
Modificato da oliweb76 il 20 novembre 2015 14.53 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
il motivo per cui vengono inseriti due o più records dipende dal ciclo While, che "gira" tante volte per quanti sono i file caricati.
Dato che all'interno del ciclo While hai messo una chiamata ad AddNew, ecco che verranno creati altrettanti record.

Dovresti eliminare il ciclo While e sostituirlo con questo blocco.
Non ho mai usato la classe di Baol74 e non ho modo di verificare quanto scrivo qui di seguito. Se hai errori, cerca di interpretare l'intento.
Se non sono alla fine, ovvero se c'era un primo file...
If Not .EOF Then
  'Salvo il primo file caricato
  .Save
  response.Write "il primo file " & .GetFileName &" è stato salvato <br>"
  .Database.Fields("PFoto") = .GetFileName
  'Mi sposto al successivo
  .MoveNext
End If

Se non sono alla fine, ovvero se c'era un secondo file...
If Not .EOF Then
  'Salvo il secondo file
  .Save
  response.Write "il secondo file " & .GetFileName &" è stato salvato <br>"
  .Database.Fields("PFoto2") = .GetFileName
End If

.Database.Fields("titolo") = .Form("titolo")
.Database.Fields("annuncio") = .Form("annuncio")
'Inserimento
.Database.AddNew()

Ripeto, questo codice va al posto del ciclo While che va eliminato.

ciao
Modificato da BrightSoul il 26 novembre 2015 00.01 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.