29. maj 2003 - 10:29
Der er
35 kommentarer og 1 løsning
Tilføj data til db
Hvad er galt..??? ----------news.htm------------ <FORM ACTION="newsdata.ASP" METHOD="GET"> <P><FONT SIZE="2" COLOR="white" FACE="Arial">Tilmeld dig vores nyhedsbrev ved at udfylde nedenstående skema.</FONT></P> <P><FONT SIZE="2" COLOR="white" FACE="Arial">Bemærk! Alle kan modtage vores nyhedsbrev, men du skal være over 18 år for at deltage i vores konkurrencer.</FONT><B><FONT SIZE="2" COLOR="white" FACE="Arial"></FONT></B></P> <CENTER> <P> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="51%"> <TR> <TD WIDTH="41%"><B><FONT SIZE="2" COLOR="white" FACE="Arial">Navn</FONT></B></TD> <TD WIDTH="59%"> <CENTER> <P><INPUT TYPE="TEXT" NAME="Navn" SIZE="25"> </CENTER> </TD> </TR> <TR> <TD WIDTH="41%"><B><FONT SIZE="2" COLOR="white" FACE="Arial">Email</FONT></B></TD> <TD WIDTH="59%"> <CENTER> <P><INPUT TYPE="TEXT" NAME="Email" SIZE="25"> </CENTER> </TD> </TR> <TR> <TD WIDTH="41%"><B><FONT SIZE="2" COLOR="white" FACE="Arial">Fødselsdag (dd.mm.yy)</FONT></B></TD> <TD WIDTH="59%"> <CENTER> <P><INPUT TYPE="TEXT" NAME="Birth" SIZE="25" MAXLENGTH="8"> </CENTER> </TD> </TR> <TR> <TD COLSPAN="2"> <CENTER> <P><INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Tilmeld"> </CENTER> </TD> </TR> </TABLE> </CENTER> </FORM> -------------------newsdata.asp----------- <%@LANGUAGE="VBScript"%> <!--#include file="connect.asp"--> <% Set data = Server.CreateObject ("ADODB.Recordset") data.Open "SELECT * FROM News", MyConn %> <% data.AddNew data("Navn") = Request.QueryString("Navn") data("Email") = Request.QueryString("Email") data("Birth") = Request.QueryString("Birth") data.Update Response.Redirect("news_ok.htm") %> Får en ... siden kan ikke vises... har testet connect.asp... min forbindelse til db'en virker perfekt... hvad går der galt ???
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl" så får du formentlig en fejlbesked du kan bruge til noget
ADODB.Recordset error '800a0cb3' Object or provider is not capable of performing requested operation. /newsdata.ASP, line 11 Det brude sQ da virke ??? Eller hvad ? <% Set data = Server.CreateObject ("ADODB.Recordset") data.Open "SELECT * FROM News", MyConn %> <% data.AddNew data("Navn") = Request.QueryString("Navn") data("Email") = Request.QueryString("Email") data("Birth") = Request.QueryString("Birth") data.Update Response.Redirect("news_ok.htm") %> Den øverste er linie 11... ????
Hov... min fejl... det er data.AddNew som er linie 11...
prøv at lav en "rigtig" insert; SQL = "INSERT INTO news (navn, email, birth) VALUES('" & Request.QueryString("Navn") & "', '" & Request.QueryString("Email") & "', '" & Request.QueryString("Birth") & "')" og så er det måske ikke så smart at overføre værdierne i querystrings - ekstremt usikkert! brug METHOD="POST" i din form i stedet og få fat i værdierne med Request.Form("xxx")
HUH??? Ikke helt med ? Det andet virker da også, eller burde da gøre det... har da brugt det før... sikkerhed er ikke et spørgsmål her... det er ligegyldigt.
Hvordan mener du jeg skal gøre med request.form ??? Er ikke med ...
request.form skal du bruge hvis du benytter method="post" i din form - det er meget mere sikkert og er generelt bedre. Hvis du holder på at bruge method="get" skal du bare bruge request.querystring som hele tiden... Jeg har aldrig arbejdet med den form for insert så jeg ved ikke hvad fejlen betyder eller hvad du kan gøre ved det - siger bare at en "rigtig" insert som den jeg giver arbejder en del bedre end det du gør.
Prøv at tilføje ,1,3 til data.Open linje : data.Open "SELECT * FROM News", MyConn,1,3
Ja okay... det er fair nok, men kender ikke til request.from... har set men aldrig brugt... hvordan gør jeg ?
det har jeg lige fortalt - benyt method="post" i din form og i stedet for request.querystring skriver du request.form
Skal jeg ændre noget i news.htm ??? Altså udover GET -> POST
nope - ellers havde jeg skrevet det ;o)
Naeh... det virker heller ikke... det burde sQ da ikke være så svært... pinligt nok *GG*
Altså ... jeg har udskiftet data.AddNew med det du "key" skrev... og tilføjet det eagle skrev... men stadig intet... den redirecter til news_ok.htm men skriver intet i min db...
du må heller ikke blande de to ting sammen - så SKAL det gå galt! ----------news.htm------------ <FORM ACTION="newsdata.ASP" METHOD="POST"> <P><FONT SIZE="2" COLOR="white" FACE="Arial">Tilmeld dig vores nyhedsbrev ved at udfylde nedenstående skema.</FONT></P> <P><FONT SIZE="2" COLOR="white" FACE="Arial">Bemærk! Alle kan modtage vores nyhedsbrev, men du skal være over 18 år for at deltage i vores konkurrencer.</FONT><B><FONT SIZE="2" COLOR="white" FACE="Arial"></FONT></B></P> <CENTER> <P> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="51%"> <TR> <TD WIDTH="41%"><B><FONT SIZE="2" COLOR="white" FACE="Arial">Navn</FONT></B></TD> <TD WIDTH="59%"> <CENTER> <P><INPUT TYPE="TEXT" NAME="Navn" SIZE="25"> </CENTER> </TD> </TR> <TR> <TD WIDTH="41%"><B><FONT SIZE="2" COLOR="white" FACE="Arial">Email</FONT></B></TD> <TD WIDTH="59%"> <CENTER> <P><INPUT TYPE="TEXT" NAME="Email" SIZE="25"> </CENTER> </TD> </TR> <TR> <TD WIDTH="41%"><B><FONT SIZE="2" COLOR="white" FACE="Arial">Fødselsdag (dd.mm.yy)</FONT></B></TD> <TD WIDTH="59%"> <CENTER> <P><INPUT TYPE="TEXT" NAME="Birth" SIZE="25" MAXLENGTH="8"> </CENTER> </TD> </TR> <TR> <TD COLSPAN="2"> <CENTER> <P><INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Tilmeld"> </CENTER> </TD> </TR> </TABLE> </CENTER> </FORM> ---------------------- -------------------newsdata.asp----------- <% 'FORBIND TIL DIN DATABASE SQL = "INSERT INTO news (navn, email, birth) VALUES('" & Request.Form("Navn") & "', '" & Request.Form("Email") & "', '" & Request.Form("Birth") & "')" Myconn.Execute(SQL) Response.Redirect("news_ok.htm") %>
Har kopieret direkte fra det du skrev... Resultat : Microsoft JET Database Engine error '80040e14' The INSERT INTO statement contains the following unknown field name: 'navn'. Make sure you have typed the name correctly, and try the operation again. /newsdata.ASP, line 12 & "', '" & Request.Form("Email") & "', '" & Request.Form("Birth") & "')"
hvad hedder dine felter i databasen?
Navn, Email, Birth Har lige genskrevet navnene i db'en for at sikre der ikke var noget, men samme besked... Microsoft JET Database Engine error '80040e07' Data type mismatch in criteria expression. /newsdata.ASP, line 12
hvilke felt-typer er de forskellige felter? tekst, notat, tal... ?
Tekst tekst, og birth er short date...
så prøv noget i retning af dette; SQL = "INSERT INTO news (navn, email, birth) VALUES('" & Request.Form("Navn") & "', '" & Request.Form("Email") & "', #" & Request.Form("Birth") & "#)" Myconn.Execute(SQL)
Det er det samme... jeg ved ikke om det er fordi min udbyder skodder lidt . *GG*
nej - skyldes udelukkende programmering... SQL = "INSERT INTO news (navn, email, birth) VALUES('" & Request.Form("Navn") & "', '" & Request.Form("Email") & "', #" & Request.Form("Birth") & "#)" response.write SQL response.end 'Myconn.Execute(SQL) hvad står så?
Der står ... INSERT INTO news (navn, email, birth) VALUES('Kim Bang', 'jps6kb@hotmail.com', #10.10.80#)
Den skrever nærmest bare på skærmen hvad det var jeg postede...
Når man indsætter datoer via SQL til access så bruge US eller UK format som er yyyy-mm-dd eller mm-dd-yyyy. Det kan formaters med Year,month og day functionerne Sår prøv: datoStr = Year(Request.Form("Birth")) & "-" & Month(Request.Form("Birth")) & "-" & day(Request.Form("Birth")) SQL = "INSERT INTO news (navn, email, birth) VALUES('" & Request.Form("Navn") & "', '" & Request.Form("Email") & "', #" & datoStr & "#)"
Okay... den melder ikke fejl, men skriver tilgengæld heller ikke noget i databasen...
Du har husket at fjerne det som udskrier? response.write SQL 'response.end Myconn.Execute(SQL)
Ja... filen ser sådan ud nu... <%@LANGUAGE="VBScript"%> <!--#include file="connect.asp"--> <% Set data = Server.CreateObject ("ADODB.Recordset") data.Open "SELECT * FROM News", MyConn,1,3 %> <% datoStr = Year(Request.Form("Birth")) & "-" & Month(Request.Form("Birth")) & "-" & day(Request.Form("Birth")) SQL = "INSERT INTO news (navn, email, birth) VALUES('" & Request.Form("Navn") & "', '" & Request.Form("Email") & "', #" & datoStr & "#)" Response.Redirect("news_ok.htm") %>
Du mangler det som indsætter i database, i øjebllet laver du bare en SQL sætning Så tilføj denne linje: Myconn.Execute(SQL) Efter linjen med SQL = ".. datoStr = Year(Request.Form("Birth")) & "-" & Month(Request.Form("Birth")) & "-" & day(Request.Form("Birth")) SQL = "INSERT INTO news (navn, email, birth) VALUES('" & Request.Form("Navn") & "', '" & Request.Form("Email") & "', #" & datoStr & "#)" Myconn.Execute(SQL)
Virker... mercí... Her er dine point... du har fortjent dem *LOL*
keysersoze vil du ikke lige havde ½ delen du har jo lavet for arbejdet
hov! kan se at det er løst :) ja - der kan man bare se... man kan ikke vende ryggen til et øjeblik uden at frugten af ens hårde arbejde bliver høstet af en anden ;oP
Kurser inden for grundlæggende programmering