PDA

View Full Version : ASP VBscript problema ENORME


Tama
28-04-2005, 08:28
Salve, ho un problema enorme e non so dove sbattere la testa.
Trattasi di sito in asp, dove andrebbero inserite delle strutture turistiche, ognuna con miniatura fotografica, eventuali altre foto, breve descrizione e opuscolo pdf, oltre a un codice univoco per ogni struttura e a un numero progressivo che stabilisce l'ordine di visualizzazione.

Che succede (il cliente inc.... come una belva logicamente): io faccio le prove e va tutto bene, il cliente ieri sera inserisce 7 strutture e la foto dell'ultima inserita sostituisce tutte le altre foto!!! La cosa strana è che mentre lui stava inserendo le strutture io, da casa mia, stavo guardando il sito e vedevo che tutto andava bene e allora me ne sono andata a letto... poi stamani lo shock.
Non so dove mettere le mani...

Mighell
28-04-2005, 09:06
E' difficile fare una stima senza vedere il codice.
Così...a naso, sembra che il problema sia nel nome che dai all'immagine.
Controlla la procedura di upload delle immagini e se nel db inserisci il nome corretto.
Occhio alla query di inserimento del dato dell'immagine nel DB: potresti aver dimenticato di inserire una clausola where.

CIao

Tama
28-04-2005, 10:03
Le immagini hanno nomi qualsiasi, quando ho fatto tutte le mie prove ho usato immagini a caso che avevo nel pc, la cosa strana è che non ho avuto problemi, a un certo punto invece il cliente inserisce una foto la quale sostituisce tutte le altre e non solo, le foto precedenti, che andavano bene, sono state cancellate dalla directory dove vengono salvate. Intanto il cliente mi ha tel. minacciando il ricorso alle vie legali.
Ti copioincollo il codice che mette su le foto:

<% if session("passwd") <> "entra" then response.redirect("pass.asp")
server.ScriptTimeout = 900 %>
<head>
<script language="JavaScript" type="text/javascript">
<!--
function valid(form) //funzione che controlla il riempimento dei campi del form
{
if(form.pdf.value == "")
{alert("Inserire un PDF"); return false;}

else if(form.cod.value == "")
{alert("Inserire il CODICE struttura"); return false;}

else {return true;}
}
-->
</script>
</head>
<body>
<%
Set db = Server.CreateObject("ADODB.Connection")
dbfile = Server.MapPath("database") & "\datab.mdb"
db.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & dbfile)

Set up = Server.CreateObject("aspSmartUpload.SmartUpload")
up.AllowedFilesList = "jpg,jpeg,pdf"
' up.MaxFileSize = da decidere
up.Upload

cod = up.form("cod")
if cod <> "" then
set rs = db.execute("select ID from strutture where cod=" & cod)
if not rs.eof then
' qui ci va il caso del codice duplicato
%>
<form action="script_inserisci.asp" method="post" enctype="multipart/form-data" onsubmit="return valid(this)">
<table width="640" border="0" cellspacing="2" cellpadding="2">
<tr>
<td colspan="3"><p><strong>Il codice inserito è già presente.</strong> </p>
<p>Inserire un codice diverso (sarà necessario scegliere di nuovo eventuali immagini e il file PDF). </p></td>
</tr>
<tr>
<td align="right">Codice struttura: </td>
<td><input name="cod" type="text" value="<% =cod %>"></td>
<td>Numero d'ordine:
<input name="ordine" type="text" id="ordine" size="4" value="<% =up.form("ordine") %>" /></td>
</tr>
<tr>
<td align="right">Nome: </td>
<td colspan="2"><input name="nome" type="text" value="<% =up.form("nome") %>" size="42"></td>
</tr>
<tr>
<td align="right">Descrizione: </td>
<td colspan="2"><textarea name="descr" cols="42" rows="6"><% =up.form("descr") %></textarea></td>
</tr>
<tr>
<td align="right">Zona: </td>
<td colspan="2"><select name="zona">
<option value="Firenze"<%
if up.form("zona")="Firenze" then response.write " selected"
%>>Firenze</option>
<option value="Siena"<%
if up.form("zona")="Siena" then response.write " selected"
%>>Siena</option>
<option value="Chianti"<%
if up.form("zona")="Chianti" then response.write " selected"
%>>Chianti</option>
<option value="Valdarno"<%
if up.form("zona")="Valdarno" then response.write " selected"
%>>Valdarno</option>
<option value="Valdorcia"<%
if up.form("zona")="Valdorcia" then response.write " selected"
%>>Val d'Orcia</option>
<option value="Maremma"<%
if up.form("zona")="Maremma" then response.write " selected"
%>>Maremma</option>
<option value="Altre zone"<%
if up.form("zona")="Altre zone" then response.write " selected"
%>>Altre zone</option>
</select></td>
</tr>
<tr>
<td align="right">Tipologia: </td>
<td colspan="2"><select name="tipo">
<option value="Agriturismo"<%
if up.form("tipo")="Agriturismo" then response.write " selected"
%>>Agriturismo</option>
<option value="Alberghi"<%
if up.form("tipo")="Alberghi" then response.write " selected"
%>>Alberghi</option>
<option value="Appartamenti"<%
if up.form("tipo")="Appartamenti" then response.write " selected"
%>>Appartamenti</option>
<option value="Castelli"<%
if up.form("tipo")="Castelli" then response.write " selected"
%>>Castelli</option>
<option value="Locande"<%
if up.form("tipo")="Locande" then response.write " selected"
%>>Locande</option>
<option value="Residence"<%
if up.form("tipo")="Residence" then response.write " selected"
%>>Residence</option>
<option value="Ville-casali"<%
if up.form("tipo")="Ville-casali" then response.write " selected"
%>>Ville</option>
<option value="Itinerari"<%
if up.form("tipo")="Itinerari" then response.write " selected"
%>>Itinerari classici</option>
<option value="Terme"<%
if up.form("tipo")="Terme" then response.write " selected"
%>>Soggiorni Termali</option>
</select></td>
</tr>
<tr>
<td align="right">Foto: </td>
<td colspan="2"><input name="thumb" type="file" size="42" /></td>
</tr>
<tr>
<td align="right">Altra foto: </td>
<td colspan="2"><input name="thumb1" type="file" size="42" /></td>
</tr>
<tr>
<td align="right">Altra foto: </td>
<td colspan="2"><input name="thumb2" type="file" size="42" /></td>
</tr>
<tr>
<td align="right">Altra foto: </td>
<td colspan="2"><input name="thumb3" type="file" size="42" /></td>
</tr>
<tr>
<td align="right">Altra foto: </td>
<td colspan="2"><input name="thumb4" type="file" size="42" /></td>
</tr>
<tr>
<td align="right">PDF:</td>
<td colspan="2"><input name="pdf" type="file" size="42"></td>
</tr>
<tr>
<td align="right">Last Minute:</td>
<td colspan="2">Sì <input type="radio" name="lastmin" value="lastsi"<%
if up.form("lastmin") = "lastsi" then Response.Write " checked"
%>>
No <input type="radio" name="lastmin" value="lastno"<%
if up.form("lastmin") = "lastno" then Response.Write " checked"
%>></td>
</tr>
<tr>
<td align="right">&nbsp;</td>
<td colspan="2">

<input name="invia" type="submit" value="Aggiungi queste modifiche" />
<input name="annulla" type="reset" value="Annulla" /></td>
</tr>
</table>
</form>
<%
dup = true
end if
end if

if not dup then
query = "insert into strutture ("
query2 = ""
dim th(4)
query = query & "cod, "
query2 = cod & ", " 'aggiunto cod perché non è contatore
ordine = up.form("ordine")
if ordine <> "" then
query = query & "ordine, "
query2 = query2 & ordine & ", "
end if
query = query & "nome, descr, zona, tipo, lastmin, thumb, thumb1, thumb2, thumb3, thumb4, pdf) values (" & query2
nome = up.form("nome")
' nome = replace(nome, "'", "&apos;")
nome = replace(nome, chr(34), "&quot;")
query = query & chr(34) & nome & chr(34) & ", "
descr = up.form("descr")
' descr = replace(descr, "'", "&apos;")
descr = replace(descr, chr(34), "&quot;")
query = query & chr(34) & descr & chr(34) & ", "
zona = up.form("zona")
query = query & chr(34) & zona & chr(34) & ", "
tipo = up.form("tipo")
query = query & chr(34) & tipo & chr(34) & ", "
lastmin = up.form("lastmin")
if lastmin="lastsi" then query = query & "TRUE, " else query = query & "FALSE, "
' rimangono thumb e pdf che sono due file
if up.files("thumb").IsMissing then
thumb = "no_foto.jpg"
else
thumb = up.files("thumb").filename
if right(thumb, 5) = ".jpeg" then
thumb = left(thumb, len(thumb)-5) & ".jpg"
end if
up.files("thumb").saveas "foto/" & thumb
end if
query = query & chr(34) & thumb & chr(34) & ", "
for i = 1 to 4
t = "thumb" & i
if up.files(t).IsMissing then
th(i-1) = " "
else
th(i-1) = up.files(t).filename
if right(th(i-1), 5) = ".jpeg" then
th(i-1) = left(th(i-1), len(th(i-1))-5) & ".jpg"
end if
up.files(t).saveas "foto/" & th(i-1)
end if
query = query & chr(34) & th(i-1) & chr(34) & ", "
next
pdf = up.files("pdf").filename
up.files("pdf").saveas "pdf/" & pdf
query = query & chr(34) & pdf & chr(34) & ")"

if thumb <> "no_foto.jpg" then
set image = Server.CreateObject("AspImage.Image")
image.ImageFormat = 1
image.JPEGQuality = 80

iname = Server.MapPath("foto") & "\" & thumb
tname = Server.MapPath("thumb") & "\" & thumb
image.LoadImage iname
h = image.maxY
w = image.maxX
image.fileName = iname
if w > 380 then
image.ResizeR 380, cint(380 * h/w)
image.SaveImage
end if
set img = Server.CreateObject("AspImage.Image")
img.LoadImage iname
img.fileName = tname
hh = img.maxY
ww = img.maxX
img.ResizeR 120, cint(120 * hh/ww)
img.SaveImage
set image = nothing
set img = nothing
end if
for i = 0 to 3
if th(i) <> " " then
set image = Server.CreateObject("AspImage.Image")
image.ImageFormat = 1
image.JPEGQuality = 80

iname = Server.MapPath("foto") & "\" & th(i)
tname = Server.MapPath("thumb") & "\" & th(i)
image.LoadImage iname
h = image.maxY
w = image.maxX
image.fileName = iname
if w > 380 then
image.ResizeR 380, cint(380 * h/w)
image.SaveImage
end if
set img = Server.CreateObject("AspImage.Image")
img.LoadImage iname
img.fileName = tname
hh = img.maxY
ww = img.maxX
img.ResizeR 120, cint(120 * hh/ww)
img.SaveImage
set image = nothing
set img = nothing
end if
next

Set inserisci = db.execute(query)
' response.write query

set inserisci = nothing
response.write "<p>Il record è stato inserito.</p>"
end if

set db = nothing
set up = nothing
%>
<p><a href="inserisci.asp">Inseriscine un altro</a></p>
<p><a href="pre_cancella.asp">Cancella una struttura dall'archivio</a><br />
<a href="pre_modifica.asp">Modifica/Aggiorna i dati di una struttura in archivio</a><br />
<a href="ordinamento.asp">Imposta l'ordinamento delle strutture</a><br />
<a href="index.asp">Torna alla Home Page</a></p>
</body>

cionci
28-04-2005, 10:20
Digli al cliente che i bug ci possono tranquillamente essere...anche quando il lavoro è stato già consegnato...

Se provi a fare l'upload te sostituisce le altre ? Non che le imamgini che ha inserito avevano tutte lo stesso nome ? E' di norma quando si fa l'upload di questo tipo rinominare le imamgini secondo l'id presente nel DB...in questo modo non devi nemmeno salvare il nome dell'immagine nel DB...

Tama
28-04-2005, 10:47
Ho provato in questo momento a fare un upload e tutto è andato bene... La foto aveva cmq un nome differente e non credo che il cliente abbia tutte le foto con lo stesso nome.
Ieri sera ho visto che i primi inserimenti erano andati a buon fine e allora ho staccato.
In effetti rinominare le foto con l'ID mi pare un consiglio ottimo, anche se ho un po' paura che più che aumenta la complessità più si rischia di creare qualche problema.
Ma lo stesso non riesco a capire il perché di quella sostituzione.

Tama
28-04-2005, 11:42
A parte tutto, il codice vi sembra corretto?
Scusate, ma sono un po' nel pallone... il cliente mi ha dato tempo fino a lunedì, poi passerà ai fatti, dice.
Per Mighell:
la clausola where l'ho messa all'inizio quando controllo che non venga inserito un codice già esistente, nella query di inserimento vera e propria i dati che metto su dovrebbero essere giusti. Il problema si ha solo con l'immagine, gli altri dati vanno bene.

Tama
29-04-2005, 09:09
Aggiornamento: pare che il cliente abbia inserito alcune foto con lo stesso nome, abbiamo infarcito gli script di controlli, trovato un paio di altri bug e speriamo non ce ne siano più, oggi dobbiamo andare dal tipo.... :eek:

Tama
30-04-2005, 10:27
Siamo stati dal cliente... aveva dato lo stesso nome a tutte le foto.... La farcitura di controlli ora impedisce il ripetersi di questi fatti...

cionci
03-05-2005, 09:12
Siamo stati dal cliente... aveva dato lo stesso nome a tutte le foto.... La farcitura di controlli ora impedisce il ripetersi di questi fatti...
:muro: :muro: :muro: