Avatar billede none01 Nybegynder
15. februar 2005 - 11:41 Der er 16 kommentarer

Smiley vil ikke slettes

Hej
Jeg har problem med en kode som jeg har lavet.
Denne kode vil ikke helt virke:

<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
response.buffer = true
if session("status") <> "ok" then response.redirect "login.asp"

x_id = request.querystring("id")

a=request.form("a")
if a="" then a="I"
Select Case a
Case "I":
  set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("../db/db.mdb")
  strsql = "SELECT * FROM [smilies] WHERE [Id]=" & x_id
  set rs = Server.CreateObject("ADODB.Recordset")
  rs.Open strsql, conn
  x_smiley = rs("smiley")
  rs.Close
  Set rs = Nothing
Case "D":
  set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("../db/db.mdb")
  strsql = "DELETE FROM [smilies] WHERE [Id]=" & x_id
  set rs = conn.Execute(strsql)
  conn.Close
  Set conn = Nothing
  set x_smiley = CreateObject ("Scripting.FileSystemObject")
  set x_smiley = filesys.CreateTextFile ("../smiles/" & x_smiley & "", true)
  set x_smiley = filesys.GetFile("../smiles/" & x_smiley & "")
x_smiley.Delete
  Response.Redirect "smiley.asp"
End Select
%>
<HTML>
<HEAD>
</HEAD>
<BODY bgcolor="#FFFFFF">
  <span style="position: absolute; top:6px;left: 8px;letter-spacing: +0px;font: 20px Verdana, Arial;font-weight: bold;">Slet Smiley</span>

  <form action="delete_smiley.asp?id=<%= x_Id %>" method="post">
  <input type="hidden" name="a" value="D"><br><br>
    <table bgcolor="#FFFFFF" border="0" cellspacing="0" cellpadding="0" style="position: absolute; top:+150px;left: +10px">
    <tr>
    <td><font face='Verdana' size='2'><b>Smiley: <img src="../smiles/<%= x_smiley %>"></b>&nbsp;&nbsp;</font></td>
    <td><font face='Verdana' size='1'>
&nbsp;</font>&nbsp;</td>
    </tr>
    <tr>
    <td>
      <br>
        <a href='smiley.asp'>TILBAGE</a>
    <input type='submit' name='Action' value='UDFØR'>
    </td>
    </tr>
    <tr>
    <td>
    <font color="red"><BR><BR><BR>Hvis du trykker udfør bliver denne smiley slettet helt!!!</font>
    </td>
    </tr>
  </form>
  <tr>
  <td>
  <p>&nbsp;</p>
<!--#include file="../copyright.asp" -->
    </td>
  </tr>
  </table>
</BODY>
</HTML>

Når jeg trykker på udfør kommer denne fejl:

Microsoft VBScript runtime  error '800a01b6'

Object doesn't support this property or method

/nyhedsscript/admin/delete_smiley.asp, line 32

Denne kode skulle gør at når man trykker på udfør, bliver smileyen slettet fra databasen og billede filen.
Avatar billede eagleeye Praktikant
15. februar 2005 - 11:51 #1
Fejlen kommer i disse linjer ikke?
  set x_smiley = CreateObject ("Scripting.FileSystemObject")
  set x_smiley = filesys.CreateTextFile ("../smiles/" & x_smiley & "", true)
  set x_smiley = filesys.GetFile("../smiles/" & x_smiley & "")
  x_smiley.Delete


umiddelbart har du ikke et object som hedder filesys det skulle nok være den første af linjerne der skulle stå filesys hvor du opretter Filesystem objektet. Så rpvø at skrive det som:

  set filesys = CreateObject ("Scripting.FileSystemObject")
  set x_smiley = filesys.CreateTextFile ("../smiles/" & x_smiley & "", true)
  set x_smiley = filesys.GetFile("../smiles/" & x_smiley & "")
  x_smiley.Delete
Avatar billede eagleeye Praktikant
15. februar 2005 - 11:52 #2
Det måske muligt du bliver nød til at bruger server.mappath omkring sti og filnanvet hvis FSO createFile og GetFile ikke acceptere relativ sti angivelse.

  set x_smiley = filesys.CreateTextFile (Server.Mappath("../smiles/" & x_smiley & ""), true)
  set x_smiley = filesys.GetFile(Server.Mappath("../smiles/" & x_smiley & ""))
Avatar billede none01 Nybegynder
15. februar 2005 - 11:57 #3
Nu kommer den med fejlen:
Microsoft VBScript runtime  error '800a0046'

Permission denied

/nyhedsscript/admin/delete_smiley.asp, line 32
Avatar billede none01 Nybegynder
15. februar 2005 - 12:02 #4
og linie 32 er:
  set x_smiley = filesys.CreateTextFile (Server.Mappath("../smiles/" & x_smiley & ""), true)
Avatar billede eagleeye Praktikant
15. februar 2005 - 12:02 #5
For at slette en fil skal du/browseren Internet Guest Account (IUSR_xxxx) havde rettighed til at slette fra foldren. Jeg mener det er den property som hedder "modify"

Hvis filen er read-only kan den fejl også komme, read-only kan løses ved at sætte true på delete linjen:

x_smiley.Delete, true
Avatar billede eagleeye Praktikant
15. februar 2005 - 12:03 #6
Det samem gælder for at oprette en fil, der skal også være rettighed til det.
Avatar billede none01 Nybegynder
15. februar 2005 - 12:06 #7
Ja men jeg gav jo mappen smiles CHMOD 777 er det ikke nok?
Avatar billede eagleeye Praktikant
15. februar 2005 - 12:09 #8
Jo, jeg men gælder det også for browseren?
Er det windows eller unix server?
Avatar billede none01 Nybegynder
15. februar 2005 - 12:15 #9
Det er en unix server men denne kode skulle helst virke på alle server.
Avatar billede eagleeye Praktikant
15. februar 2005 - 12:22 #10
ok, jeg ved ikke helt hvordan rettighedere styres på en unix men det lyder rigtigt med CHMOD=777. Men windows mener jeg kun det er FTP programmet rettigheder man ændre og ikke browserens, det skal sættes op af webhotellet hvis man bruger en anden mappe end den de har sat op til en.
Avatar billede none01 Nybegynder
15. februar 2005 - 12:35 #11
Hmm...
På min lokale computer kommer den os med fejlen:
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A0046)
Tilladelse nægtet
/Nyhedsscript/admin/delete_smiley.asp, line 32


Og den har skriveadgang
Avatar billede eagleeye Praktikant
15. februar 2005 - 13:11 #12
Og ud har giver brugeren IUSR_<machinename> rettigheden?
Din lokal maskine er det XP?
Avatar billede none01 Nybegynder
15. februar 2005 - 13:14 #13
Jeg er ikke helt med det første og min lokale maskine er w2k.
Avatar billede eagleeye Praktikant
15. februar 2005 - 13:19 #14
Det var til din lokale compunter. En Browseren er i windows IUSR_<maskinnavn> brugeren og den skal havde rettighed til at skrive og rette i folderen for man kan arbejde med filerne.
Avatar billede none01 Nybegynder
15. februar 2005 - 13:28 #15
Det har den også, og den skulle os.
Avatar billede none01 Nybegynder
15. februar 2005 - 13:53 #16
Nu fandt jeg et par fejl i koden så den stykke af koden hvor den connecter til databasen igen ser sådan ud:
Case "D":
  set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("../db/db.mdb")
  strsql = "SELECT * FROM [smilies] WHERE [Id]=" & x_id
  set rs = Server.CreateObject("ADODB.Recordset")
  rs.Open strsql, conn
  x_smiley = rs("smiley")
  strsql = "DELETE FROM [smilies] WHERE [Id]=" & x_id
  set rs = conn.Execute(strsql)
  conn.Close
  Set conn = Nothing
  response.write(Server.Mappath("../smiles/" & x_smiley & ""))
  set filesys = CreateObject ("Scripting.FileSystemObject")
  set x_smiley = filesys.GetFile(Server.Mappath("../smiles/" & x_smiley & ""))
  x_smiley.Delete
  Response.Redirect "smiley.asp"
End Select

Nu når man trykker på udfør sender den en videre til smiley.asp uden problemer og den sletter den fra databasen, men billede filer vil bare ikke slettes hvofor???
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester