Avatar billede saudoo Nybegynder
21. oktober 2006 - 00:55 Der er 1 kommentar og
1 løsning

Tjek om fil er nedskreven i databasen, laver fejl.

Hej Eksperter,

Nu har jeg siddet og bøvlet med denne kode i nogle dage. Jeg valgte for en lille time siden, at skrive den forfra. Så simpel som mulig. Men ligelidt hjalp det.

Mit projekt ligger i at jeg ved hjælp af FSO, går ind og tjekker en mappe for mapper. Hver af de mappe, der indeholder en fil der hedder "installer.asp", bliver taget med.

Jeg indlæser "installer.asp" med Server.Execute, og bruger tre Sessions der står i installer.asp til at tjekke om filen er skrevet ind i databasen. Derefter slettes de.

F.eks:
Jeg indlæser "installer.asp" fra mappen "yoga". Deri er en session der hedder varNavn. Den indeholder stringen "Yoga". Med det tjekker jeg om der er nogle rækker, hvor feltet "navn" indeholder "Yoga".

Hvis der er det, burde den skrive at den findes i database. Og hvis ikke, burde den skrive at den ikke gør.

Dette forgår i løkken "For each mapp in findfiler.SubFolders".

I min database, findes en tabel der hedder skabelon. Den har felterne navn, beskrivelse, oprettet og så et der hedder aktiveret, men det er ligegyldigt på nuværende tidspunkt.

Kan nogle forklare mig hvad i alverden jeg gør galt her? Den laver et komplet rod, når den skal skrive ud, om indholdet i installer.asp står i databsen.

Håber i kan hjælpe, for jeg er tæt på at rive håret af.
Jakob


Kode til template.asp inkluderet herunder:
<!--#include virtual="forbindelse.asp"-->
<%
If Request.QueryString("side") = "skabeloner" Then

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set findfiler = fso.GetFolder(Server.Mappath("../templates/"))

Set skabelon = Server.CreateObject("ADODB.Recordset")
skabelon.Open "SELECT * FROM skabeloner", database

If NOT skabelon.EOF Then

For each mappe in findfiler.SubFolders
Set findtemplate = fso.GetFolder(Server.Mappath("../templates/" & mappe.Name))
   
If fso.FileExists(Server.Mappath("..\templates\") & "\" & mappe.Name & "\installer.asp") = True Then
  Server.Execute("../templates/" & mappe.Name & "/installer.asp")
       
  Set check = Server.CreateObject("ADODB.Recordset")
  check.Open "SELECT * FROM skabeloner", database
       
  If check.Fields("navn") = Session("varNavn") Then
  Response.Write(Session("varNavn") & " i databasen<br />")
  Else
  Response.Write(Session("varNavn") & " ikke i databasen<br />")
  End If
           
  check.Close
  Set check = Nothing
       
  Session("varNavn") = Delete
  Session("varBeskrivelse") = Delete
  Session("varOprettet") = Delete
End If
Next
   
Else
For each mappe in findfiler.SubFolders
Set findtemplate = fso.GetFolder(Server.Mappath("../templates/" & mappe.Name))
  Server.Execute("../templates/" & mappe.Name & "/installer.asp")
       
  Response.Write(Session("varNavn") & " ikke i databasen<br />")
       
  Session("varNavn") = Delete
  Session("varBeskrivelse") = Delete
  Session("varOprettet") = Delete
Next
End If

skabelon.Close
Set skabelon = Nothing

End If

%>
Avatar billede saudoo Nybegynder
21. oktober 2006 - 19:01 #1
Jeg fandt ikke fejlen. Men blev enig med mig selv om, at jeg ville lave det på en lettere måde. Lettere for brugeren altså. :)

Process:
Indlæs alle undermapper i mappen template. Skrive dem op.

Hvis man aktiverer en af de templates der er, redigere den blot en række i tabellen indstilinger.

Det er lettere.. :)
Avatar billede saudoo Nybegynder
21. oktober 2006 - 19:01 #2
Svaret
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