Staket som pajar recordset

ASP

15 svar · 273 visningar · startad av OveRRidE

Medlem sedan feb. 200112 078 inlägg
Trådstart#1

Jag skickar en querystring vars värde innehåller tecknet #.
Problemet är att när jag sen skall baka in det i min SQL-sats, så funkar det inget bra..

Set RecSet = Conn.Execute("SELECT * FROM pris WHERE art = '" & request.querystring("artnr") & "' ")

Jag kan inte förstå vad som är fel, eftersom jag innesluter värdet i SQL-satsen, med '.

red: stavfel

Medlem sedan juni 200032 967 inlägg
#2

Hur ser SQL-frågan ut i färdigt skick, och får du något felmeddelande?

Skriv alltså ut frågan med response.write innan execute.

Mvh,

Medlem sedan juni 2000547 inlägg
#3

Det är inte så att art är numerisk eller? I så fall kan du skippa enkelfnuttarna.

Medlem sedan feb. 200112 078 inlägg
#4
SELECT * FROM priswebsverige WHERE art = 'TEST'

så ser SQL-frågan ut, men nu syns ju inte #. TEST skall egentligen vara TEST#ABF... men den klipper vid #.

Medlem sedan feb. 200112 078 inlägg
#5

SilvioF: Nix, den är i string-format.

Medlem sedan juni 200032 967 inlägg
#6

Det beror på att # används i länkar. Det är alltså inte rakt av giltigt i en querystring, och det är där problemet ligger.

Du måste använda dig av Server.URLEncode() när du skapar länken.

<a href="sidan.asp?str=<%=Server.URLEncode(variabel)%>">blah!</a>

Mvh,

Medlem sedan feb. 200112 078 inlägg
#7

Funkar inte ändå... jag får samma fel..

Href:

.write "<a href=javascript:popUp('addKatJoin.asp?artnr=" & Server.URLEncode(recset("art")) & "')><img src=../gfx/check.gif border=0 alt='Denna artikel är inte kategoriserad. Klicka för att välja kategori till artikeln nu.'></a>"

SQL-state:

Set RecSet = Conn.Execute("SELECT * FROM priswebsverige WHERE art = '" & request.querystring("artnr") & "' ")
Medlem sedan juni 200032 967 inlägg
#8

Humm?

Hur ser den färdiga html-länken ut, och sql-frågan? Blev det någon skillnad alls?

Medlem sedan feb. 200112 078 inlägg
#9
SELECT * FROM priswebsverige WHERE art = 'TEST'
<a href=javascript:popUp('addKatJoin.asp?artnr=TEST%23ABS')>BLA</a>

Det kan inte ha att göra med att jag kör med .write eller så.. sen har jag ju fnuttar runt, pga javascriptet med. :q

Medlem sedan juni 200032 967 inlägg
#10

Hmm. Det ser rätt ut, tycker jag.

Man kan ju alltid använda replace för att göra sig av med # innan man skapar länken, och sedan replace:a tillbaka.

Eller så slutar man sälja Hewlett Packard helt och hållet... :e

Medlem sedan feb. 200112 078 inlägg
#11

Eller så slutar man sälja Hewlett Packard helt och hållet...

Vem har sagt nåt om HP överhuvudtaget? :e

Man kan ju alltid använda replace för att göra sig av med # innan man skapar länken, och sedan replace:a tillbaka.

Hrmm skall man pilla ihop en liten funk som typ ersätter # med nåt annat, och sedan sätter tillbaks det igen vid parsing i SQL-statementet eller?

Medlem sedan juni 200032 967 inlägg
#12

Hrmm skall man pilla ihop en liten funk som typ ersätter # med nåt annat, och sedan sätter tillbaks det igen vid parsing i SQL-statementet eller?

Det låter som en alldeles ypperlig idé.

Vem har sagt nåt om HP överhuvudtaget? :e

:OO ;)

Medlem sedan feb. 200112 078 inlägg
#13

ok jag har löst det, tack var @nders hjälp..

Först byter vi ut # mot ___...

Function artnr_funk()
	artnr_funk = Replace(recset("art"),"#","___")
End Function

och placerar det i länken...

<a href="sida.asp?artnr=<%=artnr_funk()%>">Klicka mig</a>

Och på nästa sida, ersätter vi tillbaks det...

Function artnr_funk_back()
	artnr_funk_back = Replace(request.querystring("artnr"),"___","#")
End function

och flyttar in i SQL-strängen.. :)

Set SQLstr = "SELECT * FROM priswebsverige WHERE art = '" & artnr_funk_back() & "' "

Kanske lite väl överbeskrivet, men men :)

Medlem sedan juni 200032 967 inlägg
#14

Ett litet förslag:

Det är bättre att du gör funktionen på så sätt att du kastar ett artikelnummer på den och den kastar tillbaka ett replaceat artikelnummer.

Function artnr_funk(artnr)
artnr_funk = Replace(artnr,"#","___")
End Function

<a href="sida.asp?artnr=<%=artnr_funk(recset("art"))%>">Klicka mig</a>

respektive:

Function artnr_funk_back(artnr)
artnr_funk_back = Replace(artnr,"___","#")
End function

SQLstr = "SELECT * FROM priswebsverige WHERE art = '" & artnr_funk_back(request.querystring("artnr")) & "' "

OBS! Du skall inte ha något Set när du skapar din SQL-fråga. Det är en vanlig sträng, och inget objekt.

Mvh,

Medlem sedan feb. 200112 078 inlägg
#15

OBS! Du skall inte ha något Set när du skapar din SQL-fråga. Det är en vanlig sträng, och inget objekt.

Oj! Skrev ur huvet lite där, detta skall ändras :)

Det är bättre att du gör funktionen på så sätt att du kastar ett artikelnummer på den och den kastar tillbaka ett replaceat artikelnummer.

Det var ett bra förslag, så gör vi. ;)

Medlem sedan feb. 200112 078 inlägg
#16

Tack.

254 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)