webForumDet fria alternativet

Tillåta vissa tecken i länkscript?

ASP

13 svar · 246 visningar · startad av Korak

Medlem sedan maj 2001133 inlägg
Frågan#1

Jag har ett länkscript med länkar i olika kategorier. Man kan som besökare tipsa om länkar, och skriva en liten beskrivning av sin länk.
Nu har jag problem med att man får ett felmeddelande om man i sin beskrivning använder sig av tecken som ex. '
Man får då detta felmeddelande:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query 

/links/default.asp, line 119

Rad 119 ser ut såhär:

Conn.Execute (SQLstmt)

Hur ska jag lösa detta?

Tack på förhand!

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

MVH, Korak
www.eskobar.nu

Medlem sedan dec. 200012 464 inlägg
#2

Du får ersätta alla ' med '' (två apostrofer)

sql = "insert into ogrish(aleb,caleb) values(" & "'" & replace(request.form("aleb"),"'","''") & "','" replace(request.form("aleb"),"'","''") & ")"

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 13 okt 2001]

Medlem sedan maj 2001133 inlägg
#3

Var i scriptet lägger jag in denna kodsnutt?

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

MVH, Korak
www.eskobar.nu

Medlem sedan dec. 200012 464 inlägg
#4

Nu visar du inte hur du bygger ihop strängen SQLstmt men det är den koden du får ändra på så att du lägger in replace på värdet för beskrivning.

Jag kan inte säga mer exakt än så om du inte visar den koden också.

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001133 inlägg
#5

Här är den koden för tipsdelen av scriptet:

<%
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM kategorier ORDER BY kategori"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("links.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  Do until rs.EOF = True
		Response.Write "<option value='" & rs("kategori") & "'>" & rs("kategori") & vbCrLf
  rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing
%>

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

MVH, Korak
www.eskobar.nu

Medlem sedan dec. 200012 464 inlägg
#6

Jag menade koden där du lagrar beskrivningen.

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001133 inlägg
#7

Hmmm...jag är verkligen för dålig på det här.
Postar hela koden:

<% response.buffer = true %>

<%
strMode = Request.Querystring("mode")
select case strMode
case "id"

Response.Buffer = True
%>

<% case "search"
' Sidan med sökresultatet

' Database connection
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("links.mdb")
' Henter søgeorden fra formularen
strKeyword = Trim(Request.Form("søgeord"))

If Len(strKeyword) = 0 Then
' Om inget skrivs i sökrutan skickas personen till denna sida
	Response.Clear
	Response.Redirect ("default.asp?mode=sok")
Else
	strKeyword = Replace(strKeyword,"'","''")
End If

' Bygger en dynamisk SQL sträng
strSQL = "SELECT id, navn, url, beskrivelse, søgeord  FROM links WHERE"
strSQL = strSQL & " (id LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (navn LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (url LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (beskrivelse LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (søgeord LIKE '%" & strKeyword & "%')"

' Skapar ett recordset utifrån SQL strängen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
' Om sökningen gav resultat
	Response.Write "<table width='500' cellspacing=0 cellpadding=0>"
        Response.Write "<tr><td align=center width='100%' colspan=2>Sökresultat för <b>" & strKeyword & "</b></td></tr>"
	Do While Not rs.EOF
	    Response.Write "<tr><td width='100%' height='2'><img src='/graphics/blank.gif' width='4' height='4'></td>"	    
		Response.Write "<tr><td valign=top width='100%' colspan=2><a href=" & rs("url")& " target=_blank>" & rs("Navn") & "</a></td></tr>"
		Response.Write "<tr><td valign=top width='80%'>" & rs("Beskrivelse") & "</a></td>"
		Response.Write "<tr><td width='100%' height='2'><img src='/graphics/blank.gif' width='4' height='4'></td>"
		Response.Write "<tr><td width='100%' height='1' align='left' colspan='2' bgcolor='#e9e9e9'><img src='1x1.gif' width='1' height='1' border='0'></td></tr>"
		Response.write "<tr><td width='100%'>&nbsp;</td></tr>"
		rs.MoveNext
	Loop
	Response.Write "<tr><td width='100%' colspan=2><a href='/artiklar/'>Artiklar</a> &#0124; <a href='default.asp?mode=sok'>Sök igen</a> &#0124; <a href='default.asp?mode=add'>Tipsa om artikel</a></td></tr>"
	Response.Write "</table><br>"
Else
' Om ingen länk passade in på sökningen
	Response.Write "<table width='500' cellspacing=1 cellpadding=1>"
        Response.Write "<tr><td align=center width='100%'>Sökresultat för <b>" & strKeyword & "</b></td></tr>"
        Response.Write "<tr><td align=center width='100%'>Inga sidor passade in på din sökning.</a><p>&nbsp;</p></td></tr>"
		Response.Write "<tr><td width='100%' colspan=2 align=center><a href='/artiklar/'>Artiklar</a> &#0124; <a href='default.asp?mode=sok'>Sök igen</a> &#0124; <a href='default.asp?mode=add'>Tipsa om artikel</a><p>&nbsp;</p><p>&nbsp;</p><br></td></tr></table><br>"
End If %>

<% case "sok"
' Sökformulär
Response.write "<table width='500'><tr><td align='center'><b>Sök</b></td></tr>"
Response.write "<tr><td width='100%'>&nbsp;</td></tr>"
Response.write "<tr><td align='center'><form method=POST action=default.asp?mode=search><input type=text name=søgeord size=25> <input type=submit value='Sök' name=send class='button'></td></tr>"
Response.write "<tr><td width='100%'>&nbsp;</td></tr>"
Response.write "<tr><td width='100%'>&nbsp;</td></tr>"
Response.Write "<tr><td width='100%' align='center'><a href='javascript:history.back()'> Tillbaka</a> &#0124; <a href='/artiklar/'>Artiklar</a> &#0124; <a href='default.asp?mode=add'>Tipsa om artikel</a></td></tr></table></form><br>"
%>
<% case "update"
' Skickar resultaten från ett länktips till databasen
' Database connection
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("links.mdb")
' Bygger SQL sträng 
SQLstmt = "INSERT INTO links (navn,url,beskrivelse,søgeord,kategori,godkendt)"
SQLstmt = SQLstmt & " VALUES ('" & request.form("navn") & "','" & request.form("url") & "','" & request.form("beskrivelse") & "','" & request.form("søgeord") & "','" & request.form("kategori") & "','nej')"

response.write sqlstmt

Conn.Execute (SQLstmt)

conn.Close
Set conn = nothing
Set SQLstmt = nothing

' Skickar besökaren till denna sida efter tipset
response.redirect ("tack.asp")
%>

<% case "add" 
' Tipsa om artikel
%>
<form method="POST" action="default.asp?mode=update">
         
        <table border="0" width="500" cellpadding="1" cellspacing="0">
          <tr> 
            <td colspan="2"><b>Tipsa om l&auml;nk</b></td>
          </tr>
          <tr> 
            <td colspan="2" height="2">&nbsp;</td>
          </tr>
          <tr> 
            <td width="18%" align="left" valign="top">Namn:</td>
            <td width="82%" align="left" valign="top"> 
              <p> 
                <input type="text" name="navn" size="32">
              </p>
            </td>
          </tr>
          <tr> 
            <td width="18%" align="left" valign="top">Adress:</td>
            <td width="82%" align="left" valign="top"> 
              <input type="text" name="url" value="http://" size="32">
            </td>
          </tr>
          <tr> 
            <td width="18%" valign="top" align="left">Beskrivning:</td>
            <td width="82%" align="left" valign="top"> 
              <textarea name="beskrivelse" cols="32"></textarea>
            </td>
          </tr>
          <tr> 
            <td width="18%" valign="top" align="left">Kategori:</td>
            <td width="82%"> 
              <select name="kategori">
<%
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM kategorier ORDER BY kategori"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("links.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  Do until rs.EOF = True
		Response.Write "<option value='" & rs("kategori") & "'>" & rs("kategori") & vbCrLf
  rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing
%>
              </select>
            </td>
          </tr>
          <tr> 
            <td width="18%" valign="top">S&ouml;kord:</td>
            <td width="82%" align="left" valign="top"> 
              <input type="text" name="søgeord" size="32" value="musik, ">
            </td>
          </tr>
          <tr> 
            <td width="18%" valign="top">&nbsp;</td>
            <td width="82%">&nbsp;</td>
          </tr>
          <tr> 
            <td width="18%" valign="top">&nbsp;</td>
            <td width="82%"> 
              <input type="submit" value="Skicka" name="send" class="button">
              <input type="reset" value="Rensa" name="anuller" class="button">
            </td>
          </tr>
          <tr> 
            <td colspan="2" valign="top">&nbsp;</td>
          </tr>
          <tr> 
            <td colspan="2" valign="top">&nbsp;</td>
          </tr>
          <tr> 
            <td width="18%" valign="top">&nbsp;</td>
            <td width="82%"><a href="javascript:history.back()">Tillbaka</a> &#0124; 
              <a href="/artiklar/">Artiklar</a> &#0124; <a href='default.asp?mode=sok'>S&ouml;k</a></td>
          </tr>
        </table>
      </form>

<% case "vis"
' Om det inte är valt något mode visas alla länkar

' Paging
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

' Database connection

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM links WHERE kategori='" & request("kat") & "' AND godkendt='ja' ORDER BY navn"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("links.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 6
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
    Response.Write "<table width='500' cellspacing='0' cellpadding='0'>"
  Do While Not rs.EOF And intRecCount > 0
    Response.Write "<tr><td width='100%' height='2'><img src='/graphics/blank.gif' width='4' height='4'></td>"
		Response.Write "<tr><td valign=top width='100%' colspan=2><a href=" & rs("url")& " target=_blank>" & rs("Navn") & "</a></td></tr>"
		Response.Write "<tr><td valign=top width='80%'>" & rs("Beskrivelse") & "</a></td>"
		Response.Write "<tr><td width='100%' height='2'><img src='/graphics/blank.gif' width='4' height='4'></td>"
		Response.Write "<tr><td width='100%' height='1' align='left' colspan='2' bgcolor='#e9e9e9'><img src='1x1.gif' width='1' height='1' border='0'></td></tr>"
		Response.write "<tr><td width='100%'>&nbsp;</td></tr>"
   intRecCount = intRecCount - 1
   rs.MoveNext
  Loop
End If
    Response.Write "</table>"
rs.Close
Set rs = Nothing

' Navigering mellan sidorna med paging
Response.Write "<table width='500'><tr>"
If Clng(intPage) > 1 Then
  Response.Write "<td><a href=default.asp?mode=vis&kat=" & request("kat") & "&page=" & intPage - 1 & "><< Tillbaka</a></td>"
Else
  Response.Write "<td>&nbsp;</td>"
End If

Response.Write ""
Response.write "<td>Sid <b>" & intPage & "</b> av <b>" & intPageCount & "</b></td>"

If Clng(intPage) < Clng(intPageCount) Then
  Response.Write "<td><a href=default.asp?mode=vis&kat=" & request("kat") & "&page=" & intPage + 1 & ">Nästa >></a></td>"
Else
  Response.Write "<td>&nbsp;</td>"
End If

Response.write "<td><p align='right'><a href='/artiklar/'>Artiklar</a> &#0124; <a href='default.asp?mode=sok'>Sök</a> &#0124; <a href='default.asp?mode=add'>Tipsa om artikel</a></p></td></tr></table>"

case else

' Database connection
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT kategori, count(*) as Antal FROM links GROUP BY kategori ORDER BY kategori"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("links.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
    Response.Write "<table width='500' cellspacing='2' cellpadding='0'>"
  Do until rs.EOF = True
		Response.Write "<tr><td width='100%' colspan=2>&#149; <a href='default.asp?mode=vis&kat=" & rs("kategori") & "'>" & rs("kategori") & "</a> (" & rs("Antal") & " st)</td></tr>"
  rs.MoveNext
  Loop
End If

    Response.write "<tr><td width='100%'>&nbsp;<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p></td></tr>"
    Response.Write "<tr><td width='100%'><a href='default.asp?mode=sok'>Sök</a> &#0124; <a href='default.asp?mode=add'>Tipsa om artikel</a></td></tr><br>"
    Response.Write "</table>"
rs.Close
Set rs = Nothing

end select %>
    </td>
  </tr>

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

MVH, Korak
www.eskobar.nu

Medlem sedan dec. 200012 464 inlägg
#8
' Bygger SQL sträng 
SQLstmt = "INSERT INTO links (navn,url,beskrivelse,søgeord,kategori,godkendt)"
SQLstmt = SQLstmt & " VALUES ('" & replace(request.form("navn"),"'","''") & "','" & replace(request.form("url"),"'","''") & "','" & replace(request.form("beskrivelse"),"'","''") & "','" & replace(request.form("søgeord"),"'","''") & "','" & replace(request.form("kategori"),"'","''") & "','nej')"

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001133 inlägg
#9

Stort tack!

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

MVH, Korak
www.eskobar.nu

Medlem sedan maj 2001133 inlägg
#10

När jag redan är igång så kanske jag kan passa på att fråga en grej till som jag skulle bli väldigt glad om nån kunde hjälpa mig med.
Skulle vilja att scriptet kollar om url'n redan finns med i databasen när någon tipasar om en ny länk.
Om den finns med så får tipsaren ett meddelande om att den redan finns inlagd.

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

MVH, Korak
www.eskobar.nu

Medlem sedan dec. 200012 464 inlägg
#11

lägg in denna kod innan du lagrar länken i databasen

'ny kod
dim recset
SQLStmt = "select 1 from links where url = '" & replace(request.form("url"),"'","''") & "'"
set recset = conn.execute(SQLStmt)

if not recset.eof then
   response.write "Din länk finns redan inlagd i databasen <br>"
   recset.close
   conn.close   
   response.end
end if
recset.close
'slut på ny kod

' Bygger SQL sträng 
SQLstmt = "INSERT INTO links (navn,url,beskrivelse,søgeord,kategori,godkendt)"
SQLstmt = SQLstmt & " VALUES ('" & replace(request.form("navn"),"'","''") & "','" & replace(request.form("url"),"'","''") & "','" & replace(request.form("beskrivelse"),"'","''") & "','" & replace(request.form("søgeord"),"'","''") & "','" & replace(request.form("kategori"),"'","''") & "','nej')"

red: stavfelning
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 13 okt 2001]

Medlem sedan maj 2001133 inlägg
#12

Jag får detta felmeddelande:

Microsoft VBScript runtime error '800a000d' 

Type mismatch: 'replaces' 

/artiklar/default.asp, line 116

Detta är rad 116:

SQLStmt = "select 1 from links where url = '" & replaces(request.form("url"),"'","''") & "'"

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

MVH, Korak
www.eskobar.nu

Medlem sedan dec. 200012 464 inlägg
#13

Många slarvfel idag ;)

Det skall stå replace och inte replaces.

SQLStmt = "select 1 from links where url = '" & replace(request.form("url"),"'","''") & "'"

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001133 inlägg
#14

Du är kung, tack så hemskt mycket.
Funkar perfekt nu. Glädje!

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

MVH, Korak
www.eskobar.nu

301 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
160 ms — ändringar (db)