12. november 2004 - 00:38Der er
11 kommentarer og 2 løsninger
Sidder fncTextChange forkert?
Hejsa NG.
Jeg dette lille opdate script på noget eksisterende indhold. Jeg prøver at få fncTextChange til at virke på updaten også. Eller kan man ikke det? Skal det være før teksten puttes i databasen fra den oprindelig <form>?
Anyways her kommer koden, håber nogen kan give mig et svar.
<% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open Application("Provider")
Set rs = Server.CreateObject("ADODB.Recordset") sql = "SELECT * FROM nyhedtemp WHERE id LIKE '" & Request.QueryString("id") & "'" rs.open sql, conn, 1, 3
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
Function fncTextChange(strText) strTekst = Trim(strText)
Du kan ikke placere en funktion indeni en if .... end if !!
Se her. Jeg bruger funktionen på næsten alle felterne, mend det er måske ikke nødvendigt. Den der Server.HTMLEncode tror jeg ikke du skal bruge, jeg kan i hvert fald ikke gennemsku hvad du vil med den.
<% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open Application("Provider")
Set rs = Server.CreateObject("ADODB.Recordset") sql = "SELECT * FROM nyhedtemp WHERE id LIKE '" & Request.QueryString("id") & "'" rs.open sql, conn, 1, 3
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
Jeg kan se at der er rod i det med de to if'er - prøver lige igen:
<% if Request.ServerVariables("REQUEST_METHOD") = "POST" then Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open Application("Provider")
Set rs = Server.CreateObject("ADODB.Recordset") sql = "SELECT * FROM nyhedtemp WHERE id LIKE '" & Request.QueryString("id") & "'" rs.open sql, conn, 1, 3
'Opdaterer felterner rs("overskrift") = fncTextChange(Request("overskrift")) rs("indhold") = fncTextChange(Request("indhold")) rs("forfatter") = fncTextChange(Request("forfatter")) rs("pic") = fncTextChange(Request("pic")) rs("dato") = Request("dato") rs("kilde") = fncTextChange(Request("kilde")) rs("link") = fncTextChange(Request("link")) if Request.form("active") = "active" Then rs("active") = "True" else rs("active") = "False" end if
rs.update
rs.Close Conn.close Set rs = nothing Set Conn = nothing end if
Du kan sagtens have funktionen inden i en if.. Så har du bare ikke adgang til den med mindre iffen er opfyldt. Men jeg vil egentlig opfordre dig til ikke at gøre noget særligt ved din tekst inden du sætter den ind i databasen..
Egentlig ville jeg nøjes med at bruge: Function fncTextChange(strText) strTekst = Trim(strText) fncTextChange = Replace(strTekst,"'","''") fncTextChange = Replace(fncTextChange,"""","""") End Function før jeg satte teksten ind. Fordelen ved det er at hvis du senere skal ændre på tingene i fx. et textarea, så skal du ikke til at bytte dine tags tilbage.
Jeg ville i stedet kalde fncTextChange når jeg hentede indholdet ud af databasen på et senere tidspunkt.
Hvad er det problemet er siden du mener du ikke kan kalde funktionen i din update =?
ellebaek > Jeg vidste ikke at man kunne have en function indeni en if ...
Men alligevel blev det lavet forkert.
Der er ingen grund til at ændre nogetsomhelst ved teksten, heller ikke ' til ''. Der bliver jo ikke brugt INSERT eller UPDATE, når du laver det med ADO finder den selv ud af det med plingerne.
strSQL = "SELECT TOP 4 * FROM nyhedtemp WHERE active = True ORDER BY id DESC" Set rs = objConn.Execute(strSQL)
Do While Not rs.EOF id = rs("id") overskrift = rs("overskrift") forfatter = rs("forfatter") indhold = rs("indhold") pic = rs("pic") dato = rs("dato") kilde = rs("kilde") link = rs("link") %>
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.