Avatar billede obhat Nybegynder
19. juni 2005 - 08:18 Der er 23 kommentarer og
1 løsning

Malingliste og ASP

Nogen der kan se hvad fejlen er her?
Første gang jeg tilføjer en email, virker det, anden gør det ikke.
Men efter 3 - 4 min. virker det igen, er der fejl i mit ASP script, eller er problemet min database?
Scriptet kan måske laves bedre?

<%

    if request.form("email") = "" then
    response.redirect ("default.asp")
    end if

Function ParseDate(strDate)
  ParseDate = Month(strDate) & "-" & Day(strDate) & "-" & Right(Year(strDate),2)
End Function

on error resume next
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("malingliste.mdb")

     
Set rs = Conn.Execute("SELECT email FROM liste WHERE email = '"&replace(request.form("email"), "'", "''")&"'")

if not rs.eof then
    rs.Close
    Conn.Close
    Set Conn = Nothing
    Set rs = Nothing
   
response.redirect ("http://www.minwebside.dk/main/default.asp?mode=return")
else

    Conn.execute "INSERT INTO liste (dato, email) VALUES (#"&ParseDate(date())&"#, '"&replace(request.form("email"), "'", "''")&"')"

end if

    rs.Close
    Conn.Close
    Set Conn = Nothing
    Set rs = Nothing

    response.redirect("http://www.minwebside.dk/main/default.asp?mode=tilmeldt")
   
if err <> 0 then
response.redirect("http://www.minwebside.dk/main/default.asp?mode=error")
end if
%>
Avatar billede moejensen Nybegynder
19. juni 2005 - 08:30 #1
Nu ved jeg ikke lige hvordan din DB ser ud, men hvis du kun har to felter dato og email, så kan du få problemer hvis du indsætter den samme email adresse 2 gange på samme dag (evt som test). Dette skyldes at databasen sikkert ikke vil acceptere 2 ens record. For at løse problemet, kan du 1) vælge at indsætte et id i databasen, så hver record får et unikt id. 2) vælge at bruge now(), som også giver tiden, og derved størrere præcition. 3) hvis du anvender mySQL, kan du bruge typen timestamp.
Avatar billede nielle Nybegynder
19. juni 2005 - 08:44 #2
Jeg kan ikke umiddelbart se at der er noget galt med din kode.

Problemet er nok at webserveren låser din Access-database når du redigere i den (dvs. med din INSERT). Umiddelbart rydder du pænt op efter dig (Close på connection osv.) men det lader ikke til at dette får webserveren til at slippe låsningen.

Som konsekvens heraf kan du ikke skrive til databasen igen før at låsen fjernes igen, og dette sker efter et par minutter.

Desværre har jeg ikke nogen løsning på dit problem. Der er ikke umiddelbart noget du mangler.

Hvis du har mulighed for det kunne du skifte til en *rigtig* database som f.eks. MySQL. Access var fra starten tænkt som en 1-person-database og konsekvenserne af dette skinner stadig igennem.

Eller du kunne overveje at lade være med at lukke forbindelserne, og at kun åbne en enkelt ved starten af dit program. På den måde belaster du ikke databasen så meget ved at åbne og lukke.
Avatar billede obhat Nybegynder
19. juni 2005 - 08:51 #3
Jeg skal lige sige, jeg har et id felt i databasen og med koden
.........
Set rs = Conn.Execute("SELECT email FROM liste WHERE email = '"&replace(request.form("email"), "'", "''")&"'")

if not rs.eof then
.........

skulle man sikret sig, at databasen ikke bliver tilskrevet igen.
Synes bare det er underligt, jeg har før haft et malingsystem som dette uden nogen problemer???
Avatar billede nielle Nybegynder
19. juni 2005 - 08:55 #4
Som sagt, mener jeg at problemet ligger hos serveren - at den simpelthen ikke slipper låsningen på din Access mdb-fil med det samme.
Avatar billede obhat Nybegynder
19. juni 2005 - 08:59 #5
Hvis dette er tilfældet burde jeg få en serverfejl og "if err <> 0" skulle redirecte til http://www.minwebside.dk/main/default.asp?mode=error

Noget tyder vel på at databasen bare løber.. NOT RS.EOF ??
Avatar billede nielle Nybegynder
19. juni 2005 - 09:11 #6
1) Err bliver kun sat til noget hvis det er en SQL-fejl.
2) Hvis serveren ikke selv tror at det er en fejl, så vil den selvfølgelig heller ikke sætte noget flag om dette.
Avatar billede nielle Nybegynder
19. juni 2005 - 09:12 #7
... men du kan da disable dine rediorects og så se om der bliver skrevet noget ud på skærmen.
Avatar billede obhat Nybegynder
19. juni 2005 - 09:41 #8
Scriptet må være helt tosset eller også har jeg virus på serveren.!!!
Nu har jeg slettet hele databasen og aligevel siger scriptet, når man tilføjer:

Du er nu tilmeldt.

Jeg er stået helt af......
Avatar billede nielle Nybegynder
19. juni 2005 - 09:48 #9
Fjern din:

on error resume next

- så kommer du nok til at se dine fejlmeddelelser.
Avatar billede obhat Nybegynder
19. juni 2005 - 09:56 #10
Ja korrekt...

Så får jeg fejlen:
Provider (0x80004005)
Uspecificeret fejl
/main/proc.asp, line 13

Og linie 13 er:
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("malingliste.mdb")
Avatar billede nielle Nybegynder
19. juni 2005 - 10:00 #11
on error resume next

... betyder at den simpelthen skal gå videre i programmet hvis der kommer en fejl. Som om intet var hent. Pointen er så at man forventes selv at lave en korrekt fejlhåndtering i stedet for at lade fejlen resultere i at der stoppes brat og katastrofalt og med en SQL-meddelelse til skærmen.
Avatar billede obhat Nybegynder
19. juni 2005 - 10:04 #12
Ja, men det var jo også derfor at jeg redirectet til
http://www.minwebside.dk/main/default.asp?mode=error

men det sker simpelthen ikke, sciptet retunerer altid til:
Du er nu tilmeldt, selvom det ikke sker.

Men hvad kan jeg stille op med fejlen i linie 13?
Avatar billede nielle Nybegynder
19. juni 2005 - 10:07 #13
Ja, korrekt, men det gør du jo først allersidst i dit script. Men der kommer den slet ikke ned, hvis du redirecter forinden.
Avatar billede obhat Nybegynder
19. juni 2005 - 10:14 #14
Ok, nu dropper jeg "on error"
Hvad gør jeg med min fejl i linie 13? jeg har aldrig oplevet denne før, uspisificeret fejl, det lyder da mærkeligt og som sagt, efter kort tid, virker det en enkelt gang igen osv.
Avatar billede nielle Nybegynder
19. juni 2005 - 10:16 #15
Nu spørger jeg lige dumt - har du husket at gendanne din database igen? Du slettede den jo.
Avatar billede obhat Nybegynder
19. juni 2005 - 10:33 #16
Ja det har jeg og i mellemtiden har jeg haft oploadet filerne til et webhotel for at sikre mig at det ikke er min IIS der fejlen.
Fejlen er også på hotelet.
Avatar billede nielle Nybegynder
19. juni 2005 - 10:35 #17
Prøv at udskrive server.MapPath("malingliste.mdb") på din side. Prøv derefter at sammenligne denne med hvor database-filen rent faktisk liggr.
Avatar billede obhat Nybegynder
19. juni 2005 - 10:40 #18
What the fuck sker der her???

Nu har jeg geninstalleret min Frontpage og gemt filerne igen.
Nu virker det upåklageligt ???????????????

Har min Frontpage lavet balade, eller er det virus?
Avatar billede nielle Nybegynder
19. juni 2005 - 10:44 #19
Virus får skylden for meget - men nej det tror jeg ikke. ;^)

Somme tider behøver en PC nu heller ikke have en undskyldning for at tingene går galt.

Men, undskyld jeg spørger, hvor kom FrontPage lige ind i sammenhængen?
Avatar billede obhat Nybegynder
19. juni 2005 - 10:49 #20
Jamen jeg bruger Frontpage til scriptet
Avatar billede nielle Nybegynder
19. juni 2005 - 10:57 #21
Selv bruger jeg DreamWeaver eller endda Notepad. Jeg synes faktisk at Frontpage er noget s***.

Jamen så tror jeg at jeg kan gætte hvad der er gået galt:

1) FP har indsat et eller andet i din ASP-kode som den ikke skulle.
2) Dette har resulteret i at du fik en SQL-fejl.
3) Fordi at du havde din ON ERROR så har scriptet ignoreret dette.
4) Dermed er du bare gået videre i eksekveringen uden at databasen blev sluppet på en pæn måde.
5) Dermed er løsen heller ikke blevet sluppet ordentligt.
6) ... dvs. først et par minutter senere når webserveren timier den ud fordi at der ikke sker noget.

Det er dog bare et gæt.

Næste gang at du oplever den slags "fænomener" synes jeg at du lige skal kigge på dine ASP filer i Notapad og på den måde sikre dig at FP ikke har sat mere ind end den skulle.
Avatar billede obhat Nybegynder
19. juni 2005 - 11:50 #22
Ok >> nielle tak for hjælpen.
Ligger du et svar, så smider jeg points
Avatar billede nielle Nybegynder
19. juni 2005 - 11:54 #23
Svar :^)
Avatar billede obhat Nybegynder
19. juni 2005 - 14:22 #24
Points
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