Avatar billede frida Nybegynder
04. juni 2005 - 15:54 Der er 12 kommentarer og
1 løsning

Indsætter i db 2 - flere gange. Hvorfor?

Hej

Jeg har en "anbefal siden", hvor jeg indsætter modtagers navn, mail og afsendernavn.
Problemet er at der tillige indsættes i db 1 - 2 gange blankt - for hver anbefaling der afsendes.

Jeg forstår simpelthen ikke hvorfor? Hjælp modtages gerne.



<%
dim conn

function OpenConn( DBPath )

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath

end function

OpenConn("d:/web/domæne.dk/database/anbefal.mdb") 
 


strAfsenderNavn = request("navn")

strModtagerNavn = request("M_navn")

strModtagerEmail = request("ad")


strSQL = "Insert into tblMail (afsendernavn, modtagernavn, modtageremail) values('" & strAfsenderNavn & "','" & strModtagerNavn & "', '" & strModtagerEmail & "')"
Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing

%>
Avatar billede busschou Praktikant
04. juni 2005 - 16:01 #1
Det du har skrevet af kode køres jo kun een gang som det står her
Så hvis det køres flere gange må det være fordi du kalder det flere gange et andet sted fra !
Avatar billede frida Nybegynder
04. juni 2005 - 16:10 #2
Jeg kalder det ikke flere gange et andet sted fra. Jeg udfylder modtagernavn, mail, afsendernavn, klikker på send - og alt virker. Mailen bliver sendt, som den skal - oplysningerne går i db - men tillige kommer 1 blank række - nogen gange 2 blanke rækker. Thats it - og jeg fatter det ikke!
Avatar billede frida Nybegynder
04. juni 2005 - 16:29 #3
Jeg har nu anbefalet siden en del gange - og der bliver konsekvent indsat en blank række - derefter rækken med de korrekte oplysninger - en blank række - den korrekte række osv osv. Jeg kan se, at andre her på Eksperten også har haft problemet, men at det er tilsyneladende er løst ved set conn = nothing - hvilket jeg jo gør.
Så........nogen bud?
Avatar billede michaelfp Nybegynder
04. juni 2005 - 16:30 #4
Prøv at betinge opdateringen af db af, at der står noget i felterne - f.eks
If (StrAfsenderNavn <> "") and... then
  conn.execute(StrSQL)
end if
Avatar billede ksoren Nybegynder
04. juni 2005 - 16:37 #5
Jeg må tilslutte mig busschous teori. Scriptet som det ligger der, indsætter kun een gang.
Avatar billede frida Nybegynder
04. juni 2005 - 16:46 #6
Jamen altså .........det virker :o)
Skulle der bare så lidt til.

Send et svar - så du kan få point.

Tak for hjælpen.
Avatar billede ksoren Nybegynder
04. juni 2005 - 16:50 #7
Det kan godt være det virker, men dit scriptet bliver stadig kaldt flere gange..
Avatar billede frida Nybegynder
04. juni 2005 - 16:53 #8
Jamen - hvorfra kaldes det så flere gange?
Avatar billede ksoren Nybegynder
04. juni 2005 - 16:55 #9
Hvor ligger html-formen? Ligger den under dit script sådan:

<%
... dit script ...
%>
<form>
<input ...>
</form>
Avatar billede michaelfp Nybegynder
04. juni 2005 - 16:56 #10
Her får du et svar. Jeg tilslutter mig dog busschou og ksoren. Noget tyder på at scriptet køres flere gange. Hvis siden har flere knapper, så køres scriptet måske uanset hvilken knap man klikker på og i så fald indsættes en blank række? - held og lykke og tak for points :-)
Avatar billede frida Nybegynder
04. juni 2005 - 17:02 #11
Ja - efter scriptet kommer resten:

<html>

<head>
    <title>Anbefal siden</title>
<Link REL="StyleSheet" HREF="style_main.css" TYPE="text/css">


<style type="text/css">
<!--
body {
    background-color: #FBDFB7;
}
.style2 {color: #FFFFFF}
.style3 {font-size: 12px; font-weight: bold;}
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>
 
<%
navn = request("navn")
modtager = request("M_navn")
if  Request.ServerVariables("REQUEST_METHOD") = "POST" then
   
        Set JMail = Server.CreateObject("JMail.SMTPMail")
        JMail.ContentTransferEncoding = "8bit"
        JMail.Charset = "ISO-8859-1"
       
        JMail.Priority = 1
        JMail.ServerAddress = "backup-mx.wannafind.dk"
    JMail.Sender = "kontakt@domæne.dk"
        JMail.Subject = "Anbefaling af siden"
    JMail.Body = "Hej " & modtager & vbCrLf & vbCrLf& "Lige en hilsen fra " & navn & vbCrLf & vbCrLf& vbCrLf
    JMail.Body= JMail.Body + "Prøv at kigge på denne hjemmeside:" & vbCrLf & vbCrLf
    JMail.Body= JMail.Body + "Den er lige noget for dig. " & vbCrLf & vbCrLf
   
        JMail.AddRecipient request("ad")
        ' Send it...
        JMail.Execute
        set JMail = nothing
response.write "<br><br><br>Hej " & request("navn")& " <br>Tak for din anbefaling,<br>som er sendt videre til <br>" & request("ad") & "<BR><BR>Venlig hilsen <br> NN"

   

else %>

<form action="anbef_2.asp" METHOD="POST" name="anbefal">
  <table width="140" height="175" border="0" cellpadding="2" cellspacing="0" bgcolor="#FBDFB7">
    <tr>
      <td width="197" bgcolor="#414443">        <p align="center" class="style2"> Anbefal<br>
          <span class="style3">NN </span>        <br>
          - send en mail: <br>
          <br>
          <br>
      </td>
    </tr>
    <tr>
      <td height="1" bgcolor="#000000" ></td>
    </tr>
    <tr>
      <td> </td>
    </tr>
    <tr>
      <td><div align="center">
        <input TYPE="TEXT" onFocus="this.form.M_navn.select()" value="Modtagerens navn?"
      NAME="M_navn" size="21" class="text">
       
      </div></td>
    </tr>
    <tr>
      <td><div align="center">
        <input TYPE="TEXT" onFocus="this.form.ad.select()" value="Modtagerens email?"
      NAME="ad" size="21" class="text">
      </div></td>
    </tr>
    <tr>
      <td height="25"><div align="center">
        <input TYPE="TEXT" onFocus="this.form.navn.select()" value="Afsenderens navn?"
      NAME="navn" size="21" class="text">
      </div></td>
    </tr>
    <tr>
      <td><div align="center"><button type="submit"  class="login">
      SEND 
      </button> </div></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
 
</form>
<%    end if %>

</body>
</html>
Avatar billede ksoren Nybegynder
04. juni 2005 - 17:06 #12
Så er det jo forklaringen. Hver gang du går ind på siden, så indsætter du i databasen.

Ved afsending af mail, benytter du

if  Request.ServerVariables("REQUEST_METHOD") = "POST" then

til at kontrollere om siden er blevet submitted, og der foreligger data til afsending/indsættelse
Avatar billede frida Nybegynder
04. juni 2005 - 17:21 #13
Ok - men så ved jeg ikke lige, hvordan jeg så skal bære mig ad.
Det forslag michaelfp kom med virker åbenbart.

Ellers opretter jeg et nyt spørgsmål.

Tak for hjælp fra alle - og fortsat god weekend!
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