Avatar billede nielle Nybegynder
21. juni 2003 - 11:50 Der er 15 kommentarer og
1 løsning

Hvorfor bliver Scriptet (eller SQL kaldet) udført 2 gange?

Som det 5. trin i forbindelse med at registrere en kunde tilmelding, vil jeg udføre scriptet ASP nedenunder. Det bliver kaldt som action=”post” fra en form i det 4. trin af processen. Her er der en hidden-variabel med navn ”Step” og værdi ”Order5.1”. (Jeg har planer om at have flere delskridt i scriptet, så derfor min select-konstruktion.)

Af en eller anden grund resultere det imidlertid i at kunden indsættes 2 gange! Det virker simpelthen som om at mit ASP script bliver kaldt 2 gange?!

For hver gang at jeg tilføjer en kunde, genereres der et kunde nr. til vedkommende. Dette laver jeg ved at tage det største kunde nr. indtil nu og så lægge et tilfældigt tal 1-100 til dette. Det sjove er at hver af 2 kundeinstanser får hvert sit nummer!

Og, det bliver endnu sjovere; For at få et indblik i hvad der egentlig sker, så indsatte jeg en Response.Write("DEBUG: [" & Customer_ID & "]") i scriptet. Denne er placeret lige efter at jeg har udtrukket max-værdien og før at jeg har lagt de 1-100 til.

Hvis max for Customer_ID f.eks. var 10276 før at mit script bliver kaldt, så kan de 2 nye poster f.eks. have hhv. 10334 og den næste 10349. Min debug linje skriver ”DEBUG: [10334]” -- altså værdien på den 1. af de 2 gange scriptet synes at blive udført. Det virker med andre ord som om at jeg aldrig ser resultatet af Write’en for den 1. gang scriptet køres (skulle jo give DEBUG: [10276]).

Er der nogen som kan gennemskue hvad i alverden det er der sker?
Avatar billede nielle Nybegynder
21. juni 2003 - 11:50 #1
Og her er så scriptet:

<%
Randomize

sub FastAdd1v1(AValue)
  SQL = SQL & "'" & AValue & "'"
end sub

sub FastAdd1v2(AKey)
  SQL = SQL & "'" & Session("Order!" & AKey) & "'"
end sub

sub FastAdd2()
  SQL = SQL & ", "
end sub

sub AddNewCustomer()
  SQL = "SELECT max(Customer_ID) as Max_Customer_ID FROM acomma_Customers"
  set rs = Conn.Execute(SQL)
 
  Customer_ID = rs("Max_Customer_ID")
  if not IsNumeric(Customer_ID) then
    Customer_ID = 10000
  end if
  Response.Write("DEBUG: [" & Customer_ID & "]")
  Customer_ID = Customer_ID + Int(Rnd()*100) + 1

  SQL = "INSERT INTO acomma_Customers VALUES ("
  call FastAdd1v1(Customer_ID)
  call FastAdd2()
  call FastAdd1v2("Name")
  call FastAdd2()
  call FastAdd1v2("Company")
  call FastAdd2()
  call FastAdd1v2("Address")
  call FastAdd2()
  call FastAdd1v2("Phone")
  call FastAdd2()
  call FastAdd1v2("EMail")
  set rs = Conn.Execute(SQL)
end sub

select case Request.Form("Step")

case "Order5.1"
  call AddNewCustomer()

case else
  response.Write("ERROR IN SCRIPT (code 75)")

end select %>
Avatar billede ellebaek Nybegynder
21. juni 2003 - 22:04 #2
<%
Randomize
select case Request.Form("Step")

case "Order5.1"
  call AddNewCustomer()

case else
  response.Write("ERROR IN SCRIPT (code 75)")

end select


sub FastAdd1v1(AValue)
  SQL = SQL & "'" & AValue & "'"
end sub

sub FastAdd1v2(AKey)
  SQL = SQL & "'" & Session("Order!" & AKey) & "'"
end sub

sub FastAdd2()
  SQL = SQL & ", "
end sub

sub AddNewCustomer()
  SQL = "SELECT max(Customer_ID) as Max_Customer_ID FROM acomma_Customers"
  set rs = Conn.Execute(SQL)
 
  Customer_ID = rs("Max_Customer_ID")
  if not IsNumeric(Customer_ID) then
    Customer_ID = 10000
  end if
  Response.Write("DEBUG: [" & Customer_ID & "]")
  Customer_ID = Customer_ID + Int(Rnd()*100) + 1

  SQL = "INSERT INTO acomma_Customers VALUES ("
  call FastAdd1v1(Customer_ID)
  call FastAdd2()
  call FastAdd1v2("Name")
  call FastAdd2()
  call FastAdd1v2("Company")
  call FastAdd2()
  call FastAdd1v2("Address")
  call FastAdd2()
  call FastAdd1v2("Phone")
  call FastAdd2()
  call FastAdd1v2("EMail")
  set rs = Conn.Execute(SQL)
end sub

%>

Prøv lige sådan her..!
Avatar billede erikjacobsen Ekspert
21. juni 2003 - 22:13 #3
Har du mere kode? Du laver måske en redirect?
Avatar billede nielle Nybegynder
21. juni 2003 - 23:13 #4
ellebaek -> Det er nu prøvet - og det hjalp desværre ikke.

Jeg kan nu heller ikke lige greje logikken i det. GIder du forklare?
Avatar billede nielle Nybegynder
21. juni 2003 - 23:19 #5
erikjacobsen -> Nej der skal ikke mere til for at fremprovokere fejlen. Der er f.eks. ikke nogen redirect indblandet.

Denne del af scriptet (kaldet inc_order5.asp) bliver inkluderet i et andet script (order5.asp) - som fungere som template for sidens gennerelle udseende (se næste post). Den bliver aktiveret via en form på den forige side (order4.asp). Efter at der trykkes på submit-knappem der, så er det pludselig to ens kunder mere i databasen.
Avatar billede nielle Nybegynder
21. juni 2003 - 23:20 #6
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="inc_db.asp"-->
<% call openDb() %>
<!--#include file="inc_init.asp"-->
<html>
<head>
<!--#include file="inc_title.asp"-->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="acomma.css">
</head>

<body>

<table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" class="template">

<tr>
<td height="1%">
<!--#include file="inc_top.asp"-->
</td>
</tr>

<tr>
<td valign="top">

<table border="0" cellpadding="10" width="100%">
<tr>
<td valign="top" width="<% =LeftMenuWidth %>">
<!--#include file="inc_order5_menu.asp"-->
</td>

<td valign="top">
<!--#include file="inc_order5.asp"-->
</td>
</tr>
</table>

</td>
</tr>

</table>

</body>
</html>
<% call closeDb() %>
Avatar billede nielle Nybegynder
21. juni 2003 - 23:22 #7
Er det mon fordi at jeg også har giver den asp-extension?

Det har jeg nu mest gjort for at Dreamweaver skal være så flink at lave kontekst-farvning på koden.
Avatar billede nielle Nybegynder
21. juni 2003 - 23:26 #8
Desværre, nej. Det hjalp heller ikke at rette extension til .inc.
Avatar billede nielle Nybegynder
22. juni 2003 - 13:38 #9
Nu har jeg også forsøgt med at indsætte koden direkte i stedet for at include den - det hjalp heller ikke. :^(
Avatar billede nielle Nybegynder
25. juni 2003 - 07:41 #10
???? Er der da slet ikke nogen som har et par gode ideer til hvad der kan være galt?

Eller til hvordan jeg kan debugge scriptet for at indkredse problemet?
Avatar billede nielle Nybegynder
27. juni 2003 - 08:26 #11
Nu har jeg sat flere points på den - det er et problem hvor jeg virkelig har brug for en løsning.
Avatar billede ellebaek Nybegynder
27. juni 2003 - 21:07 #12
send filerne til mig..

Så kigger jeg på det i morgen...

jens_ellebaek@hotmail.com

..Ellebæk!
Avatar billede ellebaek Nybegynder
12. juli 2003 - 17:32 #13
du sendte aldrig filerne til mig...?
Avatar billede nielle Nybegynder
12. juli 2003 - 21:35 #14
Næ, problemet forsvandt af sig selv. Og så glemte jeg spørgsmålet.

Det er nu stadig et mysterie hvorfor at det skate.
Avatar billede nielle Nybegynder
12. juli 2003 - 21:35 #15
Lukker.
Avatar billede aspguf Nybegynder
17. marts 2005 - 17:08 #16
Kan ikke anbefale at være hjælpe eller arbejder for acomma da de ikke betaler hvad de skylder folk..
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