Forum > ASP > Generella frågor
Hej igen, jag har kommit tillbaka med ännu ett problem :P.
Jag har gjort så att man ska kunna ändra en smiley på sidan men när man försöker ändra ändras det till tomma namn, vilket förstör smileyn.
Det funkar helt bra att lägga till en smiley då...
| Skriv utPå rad 24 så sätter du objektet File till ett "File" objekt (eller vad Upload.files är för typ av objekt. Men du använder aldrig den, för på nästa rad så sätter du en loop på alla filer som finns i ditt formulär.
Den sparar filen:
File.SaveAs "" & Path & "/"& File.FileName &""
File.SaveAs Path & "/" & File.FileName
subdir innehåller mappens namn.
Men det som ska hända på koden är ju att det ska vara en alternativ uppladdning om man ska ändra smileyn och att om man bara ska ändra namnet så ska bara det hända, men det händer något fel så att när man har ändrat namnet och trycker på "Skicka" så kommer objektets namn att bli tomt.
Och bilden verkar inte ändras heller av någon anledning...
Vilket objekt pratar du om?
set File = Upload.Files("FILE1")Jag pratar om objektet som ska uppdateras i databasen, Nu märkte jag att jag hade fel namn på
If Request.Form("simg") > 1 Then Jag ändrade det till rätt namn men inget verkar ha ändrats, det jag försöker göra är att:
Du ska kunna ändra namnet på smileyn och sen alternativt ladda upp en annan bild, och om fältet för bilden är tomt så ska bara namnet uppdateras.
Input namnet för bilden är File1, för namnet är det stext och en alternativ text är det shover.
Request.Form kan du inte använda dig av när det gäller Persits.Upload.1 objekt källa: http://support.persits.com/show.asp...code=PS01041843 Du får använda dig av
Set Upload = Server.CreateObject("Persits.Upload.1")En annan sak med, om du skall ha dynamiska mappvägar också så bör du nog kolla upp din SQL råga med eftersom du säger att den alltid skall sparas till '../files/smileys/' mappen.
Det verkar fortfarande inte fungera fast jag har ändrat alla Request.Form till Upload.Form. Jag trodde bara att Upload.Form skulle behövas om det var en Request.Form i själva upload koden. För jag hade det problemet vid när man lägger till en ny smiley. (som fungerar perfekt)
Skulle den enklaste lösningen vara att separera Bildändringen och namnändringen?
En annan sak med, om du skall ha dynamiska mappvägar också så bör du nog kolla upp din SQL råga med eftersom du säger att den alltid skall sparas till '../files/smileys/' mappen.
Vad menar du med det?
Eftersom du skriver att du sparar filen:
File.SaveAs "" & Path & "/"& File.FileName & ""
ObjConn.Execute("UPDATE Smiley set simg='../files/smileys/"& File.FileName &"' where id="&request.querystring("id")&"")Det är så att den ena uppdaterar bilden, och den andra uppdaterar smileyns namn.
Och att uppdatera bilden ska vara optimalt, så om man inte lägger in en fil där så händer ingen upload, utan det ska bara vara en ändring av namnet.
Och när man ändrar namnet blir namnet tomt. Medans bilden är kvar. Bilden verkar inte heller gå att kunna ändra...
Det är bara 1 fil man kan ladda upp åt gången. Vart ska jag lägga in Response.Write och Response.End? - Det får ju bara koden att stanna...
Det som är problemet egentligen är att Upload.Form blir tomt så att Smileyns namn blir tomt, vilket inte jag vill att det ska hända...
Rensat din kod och lagt in en UPDATE nu endast, och två debug rader:
http://www.aspkoll.se/code/Index.asp?id=528
redigerad:
Den sparar inte bilderna alls i dina koder? din if fråga känns fel, kollar om en sträng är större än 1, låter konstigt som bara den. Ändrade den till Count istället.
Det blev såhär:
UPDATE Smiley set stext='', shover='' WHERE id=197
Vilket kanske förklarar varför det blir tomt istället för det som man skrivit in i formuläret?
Om du utgå ifrån min kod, innan if frågan sätt in en response.write på Request.Form:
Response.Write(Request.Form)
Response.End()
Gjorde en uppdatering annars:
http://www.aspkoll.se/code/Index.asp?id=529
Då jag har en känsla av att du behöver Upload.form, eftersom stext och shover inte heller få något innehåll
Om du utgå ifrån min kod, innan if frågan sätt in en response.write på Request.Form:
Response.Write(Request.Form)
Response.End()
Så, det ska stå vad det stog i formuläret som i UPDATE koden?
För att det kommer ingenting där, (ersatte debugdelen med det du skrev över).
http://www.aspkoll.se/code/Index.asp?id=529
Då jag har en känsla av att du behöver Upload.form, eftersom stext och shover inte heller få något innehåll
Fick det här felet nu:
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'Upload.Form(...).Count'
/administration.asp, line 368
Upload.Form har inte Count propertyn,
Kör innan din IF fråga:
Response.Write Upload.Form("simg")
Response.End
If.....Formulärets kod:
<%If Request.Querystring("step") = "1" OR not Request.Querystring("edit") = "" Then%>
<%If not Request.Querystring("edit") = "" Then%>
<%Set ObjSmiley = ObjConn.Execute("SELECT * FROM Smiley where id="&Request.Querystring("edit")&"")%>
<%End If%>
<form method='post' enctype="multipart/form-data" action='?visa=administration&ukat=smiley<%If Request.Querystring("step") = "1" Then%>&step=2<%Else%>&edit2=ja&id=<%=Request.QueryString("edit")%><%End If%>'>
<br />Smiley text<br />
<input type='text' <%If not Request.Querystring("edit") = "" Then%>value='<%=ObjSmiley("stext")%>'<%End if%> name='stext' size='36' />
<br />Smiley hovringstext<br /><input type='text' <%If not Request.Querystring("edit") = "" Then%>value='<%=ObjSmiley("shover")%>'<%End If%> name='shover' size='36' />
<br />Smiley Bild<br />
<%If not Request.Querystring("edit") = "" Then%><i>Lämna tomt för ingen ändring</i><br><%End If%>
<input type="file" name="file1">
<br>
<select type="hidden" name="subdir">
<option type="hidden" value="files/smileys">Smileys</option>
</select>
<input type='submit' value='<%If Request.Querystring("step") = "1" Then%>Lägg till smiley<%Else%>Ändra smiley<%End If%>' /></form>
<%End If%>
Jag trodde det var något fel på två olika formulären så jag gjorde dem till samma...
Jag är ganska dålig på uppladdningskodning så jag använde det bästa som jag kunde hitta...