Avatar billede plato Juniormester
28. februar 2003 - 11:06 Der er 8 kommentarer og
2 løsninger

ASP, gemmer 2 gange

Hejsa igen...

Når jeg bruger følgende kode, opretter den et tom felt i databasen før jeg trykker gem, dvs. der kommer et tomt felt, og bagefter kommer det data jeg har indtastet i formen.
Hvordan afhjælper jeg at den ikke opretter noget førend jeg trykker gem?



<center>Indsæt skuespiller</center>
<form action="adminarkiv.asp" method="post">
Navn<input type="text" name="navnb"><br>
Født<input type="text" name="bornb"><br>
Fødested<input type="text" name="bornplaceb"><br>
Udd.<input type="text" name="uddb"><br>
link<input type="text" name="linkb"><br>
pic<input type="text" name="picb"><br>
<input type="submit" value="Gem">
</form>
<%
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("arkiv.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   



strSQL = "Insert into actor (born, bornplace, navn, udd, link, pic) values('" & Request.Form("bornb") & "', '" & Request.Form("bornplaceb") & "', '" & Request.Form("navnb") & "', '" & Request.Form("uddb") & "', '" & Request.Form("linkb") & "', '" & Request.Form("picb") & "')"
objConn.Execute(strSQL)




%>
Avatar billede kledal Nybegynder
28. februar 2003 - 11:14 #1
er det på samme side du har begge koder??
hvis ja, så er det fordi at den kører sql-sætningen hver gang du refresher siden! og der er felterne ikke udfyldt, hvilket gør at der bliver indsat et tomt felt i din DB
Avatar billede plato Juniormester
28. februar 2003 - 11:15 #2
kledal.. Kan det betale sig at dele form og asp koden op i hver sin fil?
Avatar billede kledal Nybegynder
28. februar 2003 - 11:15 #3
prøv at tage nedenstående og smid den ind i en asp-fil du kalder gem.asp
og husk så i din form at henvise til gem.asp istedet for adminarkiv.asp
<%
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("arkiv.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "Insert into actor (born, bornplace, navn, udd, link, pic) values('" & Request.Form("bornb") & "', '" & Request.Form("bornplaceb") & "', '" & Request.Form("navnb") & "', '" & Request.Form("uddb") & "', '" & Request.Form("linkb") & "', '" & Request.Form("picb") & "')"
objConn.Execute(strSQL)

response.redirect("adminarkiv.asp")
%>

hilsen kledal
Avatar billede kledal Nybegynder
28. februar 2003 - 11:16 #4
hvis du ikke deler formen og ASP koden, så skal du sørge for at SQL-sætningen kun kører når du sender formen!!
Avatar billede kledal Nybegynder
28. februar 2003 - 11:18 #5
du kunne eventuelt tjekke om den første felt var udfyldt og er det ikke det, så undlade at køre SQL-sætningen f.x. sådan her
<%if Request.Form("bornb") <> "" then

strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("arkiv.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "Insert into actor (born, bornplace, navn, udd, link, pic) values('" & Request.Form("bornb") & "', '" & Request.Form("bornplaceb") & "', '" & Request.Form("navnb") & "', '" & Request.Form("uddb") & "', '" & Request.Form("linkb") & "', '" & Request.Form("picb") & "')"
objConn.Execute(strSQL)

end if
%>
Avatar billede miknil Nybegynder
28. februar 2003 - 11:19 #6
Indsæt et hidden field du checker på om det er en form submit

<form action="adminarkiv.asp" method="post">
<input type="hidden" name="save" value"yes">

Check på om værdien er sat før du indsætter:

if (request.Form("save")="yes") then
  objConn.Execute(strSQL)
end if


miknil
Avatar billede gitrian Nybegynder
28. februar 2003 - 11:20 #7
Du kan også undersøge om der er blevet postet til siden og kun derefter udføre ASP-koden

EKS:

IF Request.ServerVariables("REQUEST_METHOD")="POST" THEN
  strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("arkiv.mdb")
  Set objConn = Server.CreateObject ("ADODB.Connection")
  objConn.Open strConnect   

  strSQL = "Insert into actor (born, bornplace, navn, udd, link, pic) values('" & Request.Form("bornb") & "', '" & Request.Form("bornplaceb") & "', '" & Request.Form("navnb") & "', '" & Request.Form("uddb") & "', '" & Request.Form("linkb") & "', '" & Request.Form("picb") & "')"
  objConn.Execute(strSQL)
END IF
Avatar billede miknil Nybegynder
28. februar 2003 - 11:23 #8
Mere optimalt er der kun at opbygge SQL'en hvis der er tale om en form submit

if (request.Form("save")="yes") then

strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("arkiv.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "Insert into actor (born, bornplace, navn, udd, link, pic) values('" & Request.Form("bornb") & "', '" & Request.Form("bornplaceb") & "', '" & Request.Form("navnb") & "', '" & Request.Form("uddb") & "', '" & Request.Form("linkb") & "', '" & Request.Form("picb") & "')"



  objConn.Execute(strSQL)
end if

miknil
Avatar billede plato Juniormester
28. februar 2003 - 11:23 #9
Takker for alt hjælpen :)
Avatar billede gitrian Nybegynder
28. februar 2003 - 12:14 #10
Det er godt nok mere "normalt"/standard at bruge min metode, end at bruge et hidden field, især når funktionen allerede findes i ASP, men det er selvfølgelig op til en selv.
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior specialister (DevSecOps) til Forsvarets nye Digitale Backbone

Capgemini Danmark A/S

Client Partner

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporter til vores supportteam i Hvidovre

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger en IT-supporterelev til Lokal IT på Flyvestation Karup