webForumDet fria alternativet

Del av querystring

11 svar · 527 visningar · startad av greggan

gregganMedlem sedan jan. 2004678 inlägg
#1

Hej,

Hur gör jag om jag vill hämta en viss del av en querystring?

för variabeln sms i querystringen så kan det skickas med 3 ord, om det gör det så vill jag bara hämta sista ordet. Hur löser jag detta?

Ex.

blbla.aspx?nr=0000&sms=greggan

alt.

blbla.aspx?nr=0000&sms=tihi+tanka+greggan

Det verkar som att det skickas lite olika information till mitt script, ibland bara namnet och ibland alla prefixen. Hur gör jag för att dels ta reda på att det är fler än ett ord, och sen för att bara plocka ut det sista om det är flera?

erkaMedlem sedan dec. 19996 522 inlägg
#2

Kör en split på din querystring, räkna längden på din array, plocka ut sista positionen

gregganMedlem sedan jan. 2004678 inlägg
#3

okej, det låter bra. jag är ganska ringrostig, du har inte lust att ge lite kodhints på vägen bara så att jag kommer igång? :r

gregganMedlem sedan jan. 2004678 inlägg
#4

Nåt i stil med detta kanske:

Dim anv As Array = Split(request.querystring(sms), "+")
if 'kolla antalet element i arrayen, hur gör jag detta?
nickname = anv(2)
else
nickname = anv(0)
end if

Skulle detta kunna funka, och i så fall, hur räknar jag antalet element i arrayen?

Kan man köra typ anv.length?

emissionMedlem sedan dec. 19996 721 inlägg
#5

Ett plustecken i en querystring är egentligen ett mellanslag, så splitta på mellanslag i stället

GlitterMedlem sedan juli 2003465 inlägg
#6

greggan skrev:

if 'kolla antalet element i arrayen, hur gör jag detta?
UBound(anv)
gregganMedlem sedan jan. 2004678 inlägg
#7

Nu får jag fel...

Compiler Error Message: BC30311: Value of type 'String' cannot be converted to '1-dimensional array of System.Object'.

Dim anv As Array = Split(txt, " ")

Jag tror att det är det där som spökar... txt är i det här fallet request.querystring("sms") som innehåller: tihi+tanka+greggan

Vad är felet?

gregganMedlem sedan jan. 2004678 inlägg
#8

oj, nej felet var en riktig klantig grej. anropade en funktion när jag deklarerade en funktion.

lösningen blev såhär:

function convertnamn(txt)
Dim anv As Array = Split(txt, " ")
if Ubound(anv) > 1 Then
convertnamn = anv(2)
else
convertnamn = txt
end if
end function

Där txt är en querystring som kan se ut på två olika sätt.

Tack så mycket för hjälpen! :birp

desdecadoMedlem sedan juli 2004206 inlägg
#9

Bör inte din if vara större än 2?:

if Ubound(anv) > 2 Then

En array är väl 0-baserad, så 2 element i arrayen är alltså anv(0) och anv(1). Om du plockar anv(2) så är alltså ubound minst 3....

(du får allstå ett fel om det skulle vara 2 ord i din array istället för 3)

gregganMedlem sedan jan. 2004678 inlägg
#10

det stämmer ju. helt rätt av dig. :)
men egentligen spelar det ingen roll eftersom alternativen som finns är 1 eller 3 ord, så det gör ingen större skillnad för min kod. men det är ju helt rätt som du skriver. :)

desdecadoMedlem sedan juli 2004206 inlägg
#11

Man ska aldrig anta något vad gäller querystrings. Om jag skulle se en url som ser ut såhär "blbla.aspx?nr=0000&sms=tihi+tanka+greggan" så skulle jag vara frestad att testa andra parametrar för något så spännande som en parameter vid namn sms! :)

gregganMedlem sedan jan. 2004678 inlägg
#12

jo jag förstår det, men grejjen är att folk får inte veta om att den där adressen finns alls. den adressen tar emot sms, och om folk visste om adressen till den så skulle dom kunna låtsas skicka sms genom att gå in på adressen och på så vis spara in pengar som jag tjänar på dom :P
men den sms-servern som skickar sms till min sida har precis bytt sätt som den skickar på och det verkar inte gå helt felfritt. förut skickade den bara ett ord, användarnamnet, till mig, men nu ska den skicka hela texten, tre ord, men det verkar inte alltid bli så. därför ska den kolla om det är 1 eller 3 ord. ;)
men jag förstår återigen vad du menar, men just i det här fallet spelar det ingen roll. :)

130 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)