09. marts 2004 - 17:34Der 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 ?
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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 %>
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.....
'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
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
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)
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%">   </TD> <TD ALIGN=RIGHT WIDTH="70%"> <INPUT TYPE=reset VALUE="Nulstil felterne">     <INPUT TYPE=Submit VALUE="Tilføj din mening"> </TD> </TR> </TABLE> </FORM> </HTML> <% End If %>
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>
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.....
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.
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.