Avatar billede tubber Juniormester
09. marts 2004 - 17:34 Der er 43 kommentarer og
1 løsning

Sende data til db

Jeg sidder og er ved at lave noget hvor jeg skal sende nogle data til en db.....

Jeg har på et tidspunkt overtaget et site fra en, men jeg forstår ikke helt at ham der lavede det i sin tid åbner en ny side for at sende data til db, kan det ikke gøres i samme side i en sub funktion ?

Jeg bruger DSN Less connection med denne kode

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("info.mdb")

Og hvordan gøres det nemmest i samme side ?

Og inden data sættes ind, skal den chekke om en post er i databasen inden den sætter data ind.........

/Tubber
Avatar billede eagleeye Praktikant
09. marts 2004 - 19:02 #1
Sådan her, man behøver ikke lave en sub til det man kan bruge Request.ServerVariables("REQUEST_METHOD") til at afgøre om en form en post'et til siden:


<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  'Gem i databasen
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("info.mdb")

  .. mere kode
 
  Conn.Close
  'Evt lav redirect her eller udskrive noget tekst om data er gemt
else
%>
<html>
<body>
<form method="post" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
<input type="text" name="navn">
<input type="submit" name="send" value="send">
</form>
</body>
</html>
<%
end if
%>
Avatar billede tubber Juniormester
09. marts 2004 - 20:05 #2
Danm det ser nemt og overskueligt ud :O)

Så er der lige det når jeg trykker på min submit button skal den chekke om teksten i det ene felt eksistere i databasen for gør det skal den ikke tilføje data.....
Avatar billede eagleeye Praktikant
09. marts 2004 - 20:10 #3
Det kan laves i stil med dette:


  'Gem i databasen
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("info.mdb")

  navn = replace(Request.Form("navn"),"'","''")
  SQL = "select * from tabelnavn where brugernavn = '" & navn & "'"
  set rs = Conn.Execute(SQL)
 
  if rs.EOF then
    'navnet var ikke i databasen tilføj
    SQL = "insert into tabelnavn (brugernavn) values ('" & navn & "')"
    Conn.Execute(SQL)
  else
    'navnet findes
    Response.Write "Navnet findes i forvejen"
  end if
  Conn.Close
  'Evt lav redirect her eller udskrive noget tekst om data er gemt
Avatar billede tubber Juniormester
09. marts 2004 - 20:23 #4
Siger mange mange tak :O)

Kigger lige på det.....og vender tilbage
Avatar billede tubber Juniormester
09. marts 2004 - 20:39 #5
Jeg får en fejl i følgende:

<form method="post" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
Avatar billede tubber Juniormester
09. marts 2004 - 20:40 #6
hov, det er når siden loader ikke når jeg trykker på submit
Avatar billede eagleeye Praktikant
09. marts 2004 - 20:43 #7
Hvilken fejl får du?
Avatar billede tubber Juniormester
09. marts 2004 - 20:45 #8
The page cannot be displayed
There is a problem with the page you are trying to reach and it cannot be displayed.

--------------------------------------------------------------------------------

Please try the following:

Click the Refresh button, or try again later.

Open the www.zentasoft.dk home page, and then look for links to the information you want.
HTTP 500.100 - Internal Server Error - ASP error
Internet Information Services

--------------------------------------------------------------------------------

Technical Information (for support personnel)

Error Type:
Microsoft VBScript compilation (0x800A03F6)
Expected 'End'
/newresponse.asp, line 38


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iOpus-I-M)

Page:
POST 21 bytes to /newresponse.asp

POST Data:
SUBMIT=Giv+din+mening

Time:
9. marts 2004, 20:42:41


More information:
Microsoft Support
Avatar billede eagleeye Praktikant
09. marts 2004 - 20:50 #9
Det forstår jeg ikke helt umiddelbarts ser linjen ok ud.
Har du husket  %>  før ?
Avatar billede tubber Juniormester
09. marts 2004 - 20:51 #10
Skal der stå noget andet i stedet for SCRIPT_NAME ?

og ja det ser det da ud til jeg har
Avatar billede eagleeye Praktikant
09. marts 2004 - 20:52 #11
Ja du kan evt prøve at skrive filnavnet på den fil som koden er i:

<form method="post" action="filensnavn.asp">
Avatar billede tubber Juniormester
09. marts 2004 - 20:57 #12
ah prøver lige :O)
Avatar billede tubber Juniormester
09. marts 2004 - 21:03 #13
For mig ser det ud til den prøver at poste noget når siden loades, jeg har smidt koden aller øverst......
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:05 #14
Så må du prøve at vise koden..
Den skulle ikke POSTe noget før man trykke på submit knappen.
Avatar billede tubber Juniormester
09. marts 2004 - 21:07 #15
Nu får jeg en odbc fejl.....men den skulle da ikke kører den conn før jeg trykker submit ?

Technical Information (for support personnel)

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/newresponse.asp, line 9


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; iOpus-I-M)

Page:
POST 21 bytes to /newresponse.asp

POST Data:
SUBMIT=Giv+din+mening

Time:
9. marts 2004, 21:10:28


More information:
Microsoft Support
Avatar billede tubber Juniormester
09. marts 2004 - 21:09 #16
Første fejl var jeg havde glemt end if til aller sidst efter den var kommet på kom den odbc

her er koden:

<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
'Gem i databasen
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("info.mdb")

  navn = replace(Request.Form("navn"),"'","''")
  SQL = "select * from tblInfo where nick = '" & nick & "'"
  set rs = Conn.Execute(SQL)
 
  if rs.EOF then
    'navnet var ikke i databasen tilføj
    SQL = "insert into tblInfo (dbNick) values ('" & nick & "')"
    Conn.Execute(SQL)
  else
    'navnet findes
    Response.Write "Navnet findes i forvejen"
  end if
  Conn.Close
  'Evt lav redirect her eller udskrive noget tekst om data er gemt
  Response.Redirect("response.asp")
else
%>
<HTML>
<HEAD>
<TITLE>Kom og Vind Rundspørge</TITLE>
<STYLE>
    TD {
    FONT-FAMILY:    VERDANA,ARIAL;
    FONT-SIZE:    12PX;
    }
</STYLE>
</HEAD>
<BODY>
<CENTER><H1>Kom og Vind Rundspørge Din Mening</H1></CENTER>

</BODY>
<FORM METHOD="POST" ACTION="<%=Request.ServerVariables("SCRIPT_NAME")%>">
<TABLE BGCOLOR="#5090F9" WIDTH="600px" ALIGN="CENTER" BORDER="1">
    <TR>
        <TD ALIGN=LEFT WIDTH="30%">
            <B>Nick:</B><BR>
            <INPUT TYPE=TEXT NAME=nick SIZE=25 VALUE="Skriv dit brugernavn her">
        </TD>
        <TD ALIGN=LEFT WIDTH="70%">
            <B>Navn og email adresse bliver ikke postet!
            Det er kun for at kunne se om det er en bruger som har indtastet sin mening.</B>
        </TD>
    </TR>
    <TR>
        <TD ALIGN=LEFT WIDTH="30%">
            <B>Navn:</B><BR>
            <INPUT TYPE=TEXT NAME=navn SIZE=25 VALUE="Skriv dit navn her">
        </TD>
        <TD ALIGN=LEFT WIDTH="70%">
            <B>Email:</B><BR>
            <INPUT TYPE=TEXT NAME=email style="width:400px;"  VALUE="Skriv din emailadresse her">
        </TD>
    </TR>
    <TR>
        <TD ALIGN=LEFT WIDTH="30%" VALIGN="TOP">
            <B>Din mening om ideen:</B><BR>
            <TABLE BORDER="0">
                <TR>
                    <TD WIDTH="75">
                        Meget God:
                    </TD>
                    <TD>
                        <INPUT TYPE=radio NAME=ide VALUE="Meget God"><BR>
                    </TD>
                </TR>
            </TABLE>           
            <TABLE BORDER="0">
                <TR>
                    <TD WIDTH="75">
                        God:
                    </TD>
                    <TD>
                        <INPUT TYPE=radio NAME=ide VALUE="God"><BR>
                    </TD>
                </TR>
            </TABLE>           
            <TABLE BORDER="0">
                <TR>
                    <TD WIDTH="75">
                        Lidt God:
                    </TD>
                    <TD>                               
                        <INPUT TYPE=radio NAME=ide VALUE="Lidt God"><BR>
                    </TD>
                </TR>
            </TABLE>           
            <TABLE BORDER="0">
                <TR>
                    <TD WIDTH="75">
                        OK:
                    </TD>
                    <TD>
                        <INPUT TYPE=radio NAME=ide VALUE="OK"><BR>
                    </TD>
                </TR>
            </TABLE>           
            <TABLE BORDER="0">
                <TR>
                    <TD WIDTH="75">
                        Lidt Dårlig:
                    </TD>
                    <TD>
                        <INPUT TYPE=radio NAME=ide VALUE="Lidt Dårlig"><BR>
                    </TD>
                </TR>
            </TABLE>           
            <TABLE BORDER="0">
                <TR>
                    <TD WIDTH="75">
                        Dårlig:
                    </TD>
                    <TD>
                        <INPUT TYPE=radio NAME=ide VALUE="Dårlig"><BR>
                    </TD>
                </TR>
            </TABLE>           
            <TABLE BORDER="0">
                <TR>
                    <TD WIDTH="75">
                        Meget Dårlig:
                    </TD>
                    <TD>
                        <INPUT TYPE=radio NAME=ide VALUE="Meget Dårlig">
                    </TD>
                </TR>
            </TABLE>
            <TABLE BORDER="0">
                <TR>
                    <TD WIDTH="75">
                        Ved Ikke:
                    </TD>
                    <TD>
                        <INPUT TYPE=radio NAME=ide VALUE="Ved Ikke">
                    </TD>
                </TR>
            </TABLE>
        </TD>
        <TD ALIGN=LEFT WIDTH="70%" VALIGN="TOP">
            <B>Note:</B><BR>
            <TEXTAREA NAME="mening" STYLE="WIDTH:400PX;HEIGHT:210PX;">Skriv din mening her</TEXTAREA>
        </TD>
           
    </TR>
    <TR>
        <TD ALIGN=LEFT WIDTH="30%">
        &nbsp
        </TD>
        <TD ALIGN=RIGHT WIDTH="70%">
            <INPUT TYPE=reset VALUE="Nulstil felterne">
            &nbsp &nbsp
            <INPUT TYPE=Submit VALUE="Tilføj din mening">
        </TD>
    </TR>
</TABLE>
</FORM>
</HTML>
<%
End If
%>
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:09 #17
Nej det skulle den ikke.
Har du haft trykket på submit? og så reloader med F5? for så vil IE blive ved med at POST'e data.

Det som er inde i then delen af denne if sætning køres kun hvis der postes til siden:
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:12 #18
hmm ja der er ikke umiddelbart noget galt med koden. Dog skal denne linje:

  navn = replace(Request.Form("navn"),"'","''")

rettes til denne da du bruger variablen nick:

  nick = replace(Request.Form("navn"),"'","''")
Avatar billede tubber Juniormester
09. marts 2004 - 21:13 #19
Nu har jeg lige rettet et par skønhedsfejl noget med nick og navnet på feltet i db....

Nu får jeg noget med en updateable query
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:16 #20
Det er fordi der skal være skrive rettighed i den folder database filen ligger til Internet Guest Account / IUSR_xxxxxxx. Se mere her:
http://activedeveloper.dk/aspdigital/kapitel2/updateable_query.asp

Eller er det XP?
Avatar billede tubber Juniormester
09. marts 2004 - 21:18 #21
request.form("navn") hvor kommer det navn fra ?
Avatar billede tubber Juniormester
09. marts 2004 - 21:19 #22
ok self er det det sorry burde jeg have set
Avatar billede tubber Juniormester
09. marts 2004 - 21:20 #23
nu virker det - bortset fra den ræser over og med den redirect der er uden den kommer med felterne hvor jeg kan indtaste noget
Avatar billede tubber Juniormester
09. marts 2004 - 21:21 #24
Fjernede den redirect og nu skriver den bare nick findes........kan ikke komme til at udfylde mine felter
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:21 #25
man kan evt lave de sådan den ikke redirecter hvis navnet findes i forvejen.
Avatar billede tubber Juniormester
09. marts 2004 - 21:22 #26
Men ellers virker det så der er points til dig
Avatar billede tubber Juniormester
09. marts 2004 - 21:23 #27
Den skal redirectes det er godt nok, men jeg har ikke fået lov at taste data ind den gør det så snart siden loader
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:25 #28
Så skal det lave lidt om i pricippet sådan den kun redirecter hvis den indsætter.

Sådan her uden else på den if sætnign sådan den altid vil vise formen, hvis den ikke indsætter:

<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  'Gem i databasen
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("info.mdb")

  nick = replace(Request.Form("nick"),"'","''")
  SQL = "select * from tabelnavn where nick = '" & nick & "'"
  set rs = Conn.Execute(SQL)
  if rs.EOF then
    'navnet var ikke i databasen tilføj
    SQL = "insert into tabelnavn (nick) values ('" & nick & "')"
    Conn.Execute(SQL)
    Conn.Close
    'LAV redirect her:
    Response.Redirect("response.asp")
  else
    'navnet findes
    Response.Write "Navnet findes i forvejen"
    Conn.Close
  end if
end if
%>
<html>
<body>
<form method="post" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
<input type="text" name="nick">
<input type="submit" name="send" value="send">
</form>
</body>
</html>
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:25 #29
også hvis du åbner siden helt forfra i et nyt browser vindue?
Avatar billede tubber Juniormester
09. marts 2004 - 21:28 #30
Det vil sige jeg får at vide nick findes i forvejen og så får mine udfyldningsfelter ?

prøver lige
Avatar billede tubber Juniormester
09. marts 2004 - 21:32 #31
Nu virker det tildels.....men den tester stadig om nick findes når den loader siden den skal først gøre det når jeg trykker på knappen
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:34 #32
Prøv at lave koden om som vist i: 09/03-2004 21:25:04
Avatar billede tubber Juniormester
09. marts 2004 - 21:45 #33
Den redirceter kun når jeg indtaster data......
Men den fortæller mig stadig brugernavnet findes når jeg går ind på siden....også efter at have lukket browseren.....

Så den kører scriptet så snart siden lukkes......
Avatar billede tubber Juniormester
09. marts 2004 - 21:45 #34
åbnes og ikke lukkes
Avatar billede tubber Juniormester
09. marts 2004 - 21:46 #35
der mangler ikke noget onSubmit eller sådan noget ?
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:48 #36
Det forstår jeg ikke det skulle ikke kunne lade sig gøre..

Prøv at udvide denne:
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

Til:
if Request.ServerVariables("REQUEST_METHOD") = "POST" and Request.Form("nick") <> "" then
Avatar billede tubber Juniormester
09. marts 2004 - 21:52 #37
Hov du skriver ("REQUEST_METHOD") ber den så ikke om at få den ?
Avatar billede eagleeye Praktikant
09. marts 2004 - 21:56 #38
Request.ServerVariables("REQUEST_METHOD")  returnere enten "GET" eller "POST". Normalt når man åbner en side er det "GET" og der bruges først "POST" når en form bliver submittet.
Avatar billede tubber Juniormester
09. marts 2004 - 22:01 #39
Den gør det stadig selv om den linie er tilføjet
Avatar billede eagleeye Praktikant
09. marts 2004 - 22:01 #40
hvilken server køre det på?
Avatar billede tubber Juniormester
09. marts 2004 - 22:02 #41
Hov nu virker det .)
Avatar billede eagleeye Praktikant
09. marts 2004 - 22:02 #42
Du har ikke et javascript eller noget som submitter formen automatisk?
Avatar billede tubber Juniormester
09. marts 2004 - 22:03 #43
mange mange tusind tak for den store og tålmodige hjælp :O)
Avatar billede tubber Juniormester
09. marts 2004 - 22:03 #44
Nej der er kun det du har set
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