PDA

View Full Version : Tillåta vissa tecken i länkscript?


Korak
2001-10-13, 11:31
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 (http://www.eskobar.nu)

LarsG
2001-10-13, 11:38
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]

Korak
2001-10-13, 11:47
Var i scriptet lägger jag in denna kodsnutt?

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

MVH, Korak
www.eskobar.nu (http://www.eskobar.nu)

LarsG
2001-10-13, 12:03
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

Korak
2001-10-13, 12:15
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 (http://www.eskobar.nu)

LarsG
2001-10-13, 12:19
Jag menade koden där du lagrar beskrivningen.

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

Korak
2001-10-13, 12:40
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>• <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 (http://www.eskobar.nu)

LarsG
2001-10-13, 12:48
' 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

Korak
2001-10-13, 14:19
Stort tack!

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

MVH, Korak
www.eskobar.nu (http://www.eskobar.nu)

Korak
2001-10-13, 15:53
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 (http://www.eskobar.nu)

LarsG
2001-10-13, 16:08
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]

Korak
2001-10-13, 18:05
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 (http://www.eskobar.nu)

LarsG
2001-10-13, 18:08
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

Korak
2001-10-13, 18:11
Du är kung, tack så hemskt mycket.
Funkar perfekt nu. Glädje!

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

MVH, Korak
www.eskobar.nu (http://www.eskobar.nu)